module Ingo
Public Instance Methods
asciidoc_link(reference, text)
click to toggle source
# File lib/ingo.rb, line 8 def asciidoc_link(reference, text) "link:#{reference}[#{text}]" end
convert_directory(base_directory)
click to toggle source
# File lib/ingo.rb, line 39 def convert_directory(base_directory) Dir.glob(File.join(base_directory, 'docs/**/*.adoc')) do |document| lines = File.readlines(document) lines += list_of_topics(document) ad_doc = Asciidoctor::Document.new(lines, header_footer: true, safe: 'unsafe') html = ad_doc.convert FileUtils.mkdir_p(File.join(base_directory, 'output')) File.open(File.join(base_directory, 'output', output_file_name(document)), 'w+') do |file| file.puts html end end end
create_index_files(base_directory)
click to toggle source
# File lib/ingo.rb, line 52 def create_index_files(base_directory) topics = populate_topics(base_directory) meta_index = <<END = Index END meta_index = write_indexes(base_directory, meta_index, topics) write_meta_index(base_directory, meta_index) end
list_of_topics(document)
click to toggle source
# File lib/ingo.rb, line 20 def list_of_topics(document) lines = [] lines << '' lines << 'Topics:' lines << '' asciidoctor_document = Asciidoctor.load_file(document) if asciidoctor_document.attributes['topics'] topics = asciidoctor_document.attributes['topics'].split(', ') topics.each do |t| lines << "#{asciidoc_link(t + '-index.html', t)} " end else puts "#{document} has no topics" end lines << '' lines end
output_file_name(input_file_name)
click to toggle source
# File lib/ingo.rb, line 12 def output_file_name(input_file_name) File.basename(input_file_name, '.*') + '.html' end
populate_topics(base_directory)
click to toggle source
# File lib/ingo.rb, line 62 def populate_topics(base_directory) topics = Hash.new Dir.glob base_directory + '/docs/**/*.adoc' do |doc| asciidoctor_document = Asciidoctor.load_file doc if asciidoctor_document.attributes['topics'] this_topics = asciidoctor_document.attributes['topics'].split(", ") this_topics.each do |t| if topics[t].nil? topics[t] = [] end topics[t] << output_file_name(doc) end end end topics end
run(base_directory)
click to toggle source
# File lib/ingo.rb, line 104 def run(base_directory) convert_directory(base_directory) create_index_files(base_directory) end
topics(document)
click to toggle source
# File lib/ingo.rb, line 16 def topics(document) Asciidoctor.load_file(document).attributes['topics'].split(', ') end
write_indexes(base_directory, meta_index, topics)
click to toggle source
# File lib/ingo.rb, line 79 def write_indexes(base_directory, meta_index, topics) topics.each do |t, docs| meta_index += "* #{asciidoc_link(t + '-index.html', t)}\n" index = <<END == Index of #{t} END docs.each do |doc| index += "* #{asciidoc_link(doc, File.basename(doc, '.*'))}\n" end html = Asciidoctor.convert(index, header_footer: true, safe: 'unsafe') File.open(base_directory + '/output/' + t + '-index.html', 'w') do |f| f.write(html) end end meta_index end
write_meta_index(base_directory, meta_index)
click to toggle source
# File lib/ingo.rb, line 97 def write_meta_index(base_directory, meta_index) html = Asciidoctor.convert(meta_index, header_footer: true, safe: 'unsafe') File.open(base_directory + '/output/index.html', 'w') do |f| f.write(html) end end