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