fname = ARGV[0]

# Tangle
myseg = :start
segments = {}
segments[myseg] = []
File.open("#{fname}.md").each do |line|
  if(line.start_with?('## '))
    myseg = line[3..].chomp
    puts "Found segment '#{myseg}'"
    segments[myseg] = []
  end

  if(line.start_with?(' '))
    segments[myseg].push(line)
  end
end
def put_lines(file, segments, sname)
  puts "Fetching segment '#{sname}'"
  segments[sname].each do |line|
    if(m = /^\s*<<([^>]+)>>\s*$/.match(line))
      put_lines(file, segments, m[1])
    else
      file.puts line
    end
  end
end
File.open("#{fname}.rb", 'w') do |out|
  put_lines(out, segments, :start)
end
