class OverpassDoc::Package
A directory containing a package.json, query files and supporting assets
Attributes
dir[R]
metadata[R]
queries[R]
Public Class Methods
new(src_dir)
click to toggle source
# File lib/overpass-doc/package.rb, line 6 def initialize(src_dir) @dir = src_dir @metadata = parse_metadata() @queries = parse_queries() end
Public Instance Methods
generate(generator)
click to toggle source
# File lib/overpass-doc/package.rb, line 12 def generate(generator) generate_index(generator) generate_query_pages(generator) copy_extra_files(generator) end
Private Instance Methods
copy_extra_files(generator)
click to toggle source
# File lib/overpass-doc/package.rb, line 39 def copy_extra_files(generator) @metadata["extra-files"].each do |file| markup = File.read( File.join(@dir, file) ) _content = render_markdown(markup) template = ERB.new( generator.read_template(:extra) ) html = layout(generator) do b = binding template.result(b) end filename = file.gsub(".md", ".html") generator.write_file(self, filename, html) end if @metadata["extra-files"] end
description()
click to toggle source
# File lib/overpass-doc/package.rb, line 98 def description @metadata["description"] || "" end
generate_index(generator)
click to toggle source
# File lib/overpass-doc/package.rb, line 65 def generate_index(generator) $stderr.puts("Generating index.html") generator.write_file(self, "index.html", render_with_layout(generator, :index)) end
generate_query_pages(generator)
click to toggle source
# File lib/overpass-doc/package.rb, line 102 def generate_query_pages(generator) @queries.each do |query| $stderr.puts("Generating docs for #{query.path}") html = render_with_layout(generator, :query, {query: query}) generator.write_file(self, query.output_filename, html) end end
layout(generator)
click to toggle source
# File lib/overpass-doc/package.rb, line 88 def layout(generator) b = binding ERB.new( generator.read_template(:layout) ).result(b) end
overview()
click to toggle source
available in template
# File lib/overpass-doc/package.rb, line 54 def overview return @overview if @overview overview = File.join(@dir, "overview.md") if File.exists?( overview ) markup = File.read( overview ) @overview = render_markdown(markup) return @overview end nil end
parse_metadata()
click to toggle source
# File lib/overpass-doc/package.rb, line 20 def parse_metadata() package = File.join(@dir, "package.json") if File.exists?(package) return JSON.load( File.open(package) ) end Hash.new end
parse_queries()
click to toggle source
# File lib/overpass-doc/package.rb, line 28 def parse_queries() queries = [] Dir.glob("#{@dir}/**/*.op") do |file| content = File.read(file) path = file.gsub("#{@dir}/", "") queries << OverpassDoc::Query.new(path, content, @metadata) end queries.sort! {|x,y| x.title <=> y.title } queries end
render_markdown(src)
click to toggle source
# File lib/overpass-doc/package.rb, line 70 def render_markdown(src) renderer = Redcarpet::Render::HTML.new({}) markdown = Redcarpet::Markdown.new(renderer, {}) markdown.render(src) end
render_with_layout(generator, template, variables={})
click to toggle source
# File lib/overpass-doc/package.rb, line 76 def render_with_layout(generator, template, variables={}) template = ERB.new( generator.read_template(template) ) b = binding variables.each do |key, value| b.local_variable_set(key, value) end html = layout(generator) do template.result(b) end return html end
title()
click to toggle source
available in template
# File lib/overpass-doc/package.rb, line 94 def title @metadata["title"] || "Overpass Query Documentation" end