require 'debug_helper' require 'markdown_helper' namespace :build do desc 'Build README.md' task :readme do # Make output files. Dir.chdir('options/depth') do command = 'ruby show.rb > show.yaml' system(command) command = 'markdown_helper include --pristine template.md show.md' system(command) end class_dir_names = nil Dir.chdir('classes') do class_names = %w/ Array Dir Exception File Hash IO MatchData Method OpenStruct Range Regexp Set String Struct Symbol Object Custom / class_dir_names = [] correct_dir_names = { :IO => 'io', :MatchData => 'match_data', :OpenStruct => 'open_struct', } class_names.each do |class_name| if correct_dir_names.include?(class_name.to_sym) class_dir_name = correct_dir_names.fetch(class_name.to_sym) else class_dir_name = class_name.downcase end class_dir_names.push(class_dir_name) end class_dir_names.each do |class_dir_name| Dir.chdir(class_dir_name) do case_dir_names = Dir.glob('*').select {|f| File.directory? f} case_dir_names.each do |case_dir_name| Dir.chdir(case_dir_name) do command = 'ruby show.rb > show.yaml' system(command) command = 'markdown_helper include --pristine template.md show.md' system(command) end end end end end # Make list of links to class sections. File.open('class_links.md', 'w') do |file| correct_class_names = { :io => 'IO', :match_data => 'MatchData', :open_struct => 'OpenStruct', } class_dir_names.each do |class_dir_name| next if %w/object custom/.include?(class_dir_name) if correct_class_names.include?(class_dir_name.to_sym) class_name = correct_class_names.fetch(class_dir_name.to_sym) else class_name = class_dir_name.capitalize end link_line = "- [#{class_name}](##{class_name.downcase})" file.puts(link_line) end end # Make inclusions for class sections. File.open('class_inclusions.md', 'w') do |file| class_dir_names.each do |class_name| inclusion_line = "@[:markdown](classes/#{class_name}/template.md)" file.puts(inclusion_line) end end # Make the README markdown. command = "markdown_helper include --pristine template.md ../../README.md" system(command) end end