1     fname = ARGV[0]
     
2     fname_input = "#{fname}.md"
     
3     myseg = :start
     
4     segments = {}
     
5     segments[myseg] = []
     
6     File.open(fname_input).each do |line|
     
7       if(line.start_with?('## '))
     
8         myseg = line[3..].chomp
     
9         segments[myseg] = []
    
10       end
    
11       if(line.start_with?(' '))
    
12         segments[myseg].push(line)
    
13       end
    
14     end
    
15     def put_lines(file, segments, sname)
    
16       segments[sname].each do |line|
    
17         if(m = /^\s*<<([^>]+)>>\s*$/.match(line))
    
18           put_lines(file, segments, m[1])
    
19         else
    
20           file.puts line
    
21         end
    
22       end
    
23     end
    
24     File.open("#{fname}.rb", 'w') do |out|
    
25       put_lines(out, segments, :start)
    
26     end
    
27     require 'rdoc'
    
28     data = File.read(fname_input)
    
29     formatter = RDoc::Markup::ToHtml.new(RDoc::Options.new, nil)
    
30     html = RDoc::Markdown.parse(data).accept(formatter)
    
31     File.open("#{fname}.html", 'w') do |out|
    
32       out.puts("<html><body>")
    
33       out.print(html)
    
34       out.puts("</body></html>")
    
35     end