13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/webapidoc/base.rb', line 13
def self.build
publicDir = "public/documentation"
docDir = "app/documentation"
libDir = gem_libdir
configFile = 'config/webapidoc.yml'
@data = YAML.load_file(configFile).freeze
puts "building webapidoc for " + @data["title"]
puts "api url: " + @data["url"]
FileUtils.remove_dir publicDir if File.exists?(publicDir)
FileUtils.mkdir_p publicDir
FileUtils.mkdir publicDir + "/css"
FileUtils.mkdir publicDir + "/js"
FileUtils.copy(libDir + "/js/jquery.js", publicDir + "/js/jquery.js")
FileUtils.copy(libDir + "/js/highlight.js", publicDir + "/js/highlight.js")
sass_filename = libDir + "/css/webapidoc.scss"
css = Sass::Engine.for_file(sass_filename, {:style => :compressed}).render
File.open(publicDir + "/css/webapidoc.css", "wb") {|f| f.write(css) }
@chapters = []
@data["chapters"].each_with_index do | chapter, idx|
inFile = "#{docDir}/#{chapter["file"]}.md"
outFile = chapter["file"] + ".html"
if File.exists?(inFile + ".erb" )
inFile = inFile + ".erb"
end
if File.exists?(inFile)
contents = File.open(inFile, 'r').read
else
puts "file not found: #{inFile}"
next
end
@chapters << { :name => chapter["name"], :out => outFile, :in => inFile}
end
@chapters.each_with_index do | chapter, idx|
contents = ERB.new(File.open(chapter[:in], 'r').read).result(binding)
maruku = Maruku.new(contents)
sections = []
maruku.each_element(:header) do | el |
next unless el.meta_priv[:level] == 2
sections << el.children[0]
end
chapter[:html] = maruku.to_html
chapter[:sections] = sections
end
template = "#{libDir}/template.html.erb"
@chapters.each do | chapter |
@html = chapter[:html]
@current = chapter
puts "building #{chapter[:name]}"
File.open("#{publicDir}/#{chapter[:out]}", 'w') { |file| file.write(ERB.new(File.open(template, 'r').read).result(binding)) }
end
end
|