class SparqlDoc::Generator
Attributes
dir[R]
graph[R]
package[R]
queries[R]
Public Class Methods
new(dir, output_dir, view_dir=nil, asset_dir=nil)
click to toggle source
# File lib/sparql-doc/generator.rb, line 7 def initialize(dir, output_dir, view_dir=nil, asset_dir=nil) @dir = dir @output_dir = output_dir @asset_dir = asset_dir || File.join( File.dirname( __FILE__ ) , "assets") @view_dir = view_dir || File.join( File.dirname( __FILE__ ) , "views") @package = parse_package() @queries = parse_queries() end
Public Instance Methods
copy_assets(asset_dir=@asset_dir)
click to toggle source
# File lib/sparql-doc/generator.rb, line 46 def copy_assets(asset_dir=@asset_dir) $stderr.puts("Copying assets"); if !File.exists?(@output_dir) FileUtils.mkdir_p(@output_dir) end Dir.new(asset_dir).each() do |file| if file != "." and file != ".." FileUtils.cp( File.join(asset_dir, file), File.join(@output_dir, file) ) end end end
copy_extra_files()
click to toggle source
# File lib/sparql-doc/generator.rb, line 59 def copy_extra_files() @package["extra-files"].each do |file| markup = File.read( File.join(@dir, file) ) renderer = Redcarpet::Render::HTML.new({}) markdown = Redcarpet::Markdown.new(renderer, {}) html = layout do markdown.render(markup) end file = File.join(@output_dir, file.gsub(".md", ".html")) File.open(file, "w") do |f| f.puts html end end if @package["extra-files"] end
generate_index()
click to toggle source
# File lib/sparql-doc/generator.rb, line 85 def generate_index() $stderr.puts("Generating index.html"); _title = @package["title"] || "Sparql Query Documentation" _overview = get_overview() _description = @package["description"] || "" template = ERB.new( read_template(:index) ) html = layout do b = binding template.result(b) end File.open(File.join(@output_dir, "index.html"), "w") do |f| f.puts(html) end end
generate_query_pages()
click to toggle source
# File lib/sparql-doc/generator.rb, line 107 def generate_query_pages() template = ERB.new( read_template(:query) ) @queries.each do |query| $stderr.puts("Generating docs for #{query.path}") File.open( File.join(@output_dir, query.output_filename), "w" ) do |f| b = binding _title = @package["title"] || "Sparql Query Documentation" _overview = get_overview() html = layout do template.result(b) end f.puts( html ) end end end
get_overview()
click to toggle source
# File lib/sparql-doc/generator.rb, line 74 def get_overview() overview = File.join(@dir, "overview.md") if File.exists?( overview ) markup = File.read( overview ) renderer = Redcarpet::Render::HTML.new({}) markdown = Redcarpet::Markdown.new(renderer, {}) return markdown.render(markup) end nil end
layout()
click to toggle source
# File lib/sparql-doc/generator.rb, line 100 def layout b = binding _title = @package["title"] || "Sparql Query Documentation" _overview = get_overview() ERB.new( read_template(:layout) ).result(b) end
parse_package()
click to toggle source
# File lib/sparql-doc/generator.rb, line 20 def parse_package() 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/sparql-doc/generator.rb, line 28 def parse_queries() queries = [] Dir.glob("#{@dir}/*.rq") do |file| content = File.read(file) path = file.gsub("#{@dir}/", "") queries << SparqlDoc::Query.new(path, content, @package) end queries.sort! {|x,y| x.title <=> y.title } queries end
read_template(name)
click to toggle source
# File lib/sparql-doc/generator.rb, line 16 def read_template(name) File.read(File.join(@view_dir, "#{name}.erb")) end
run()
click to toggle source
# File lib/sparql-doc/generator.rb, line 39 def run() copy_assets() generate_index() generate_query_pages() copy_extra_files() end