require 'pry' require 'redcarpet' class Generate < Thor include Thor::Actions desc "index", "generate index.html from README.md" def index puts "Processing README.md to generate a new index.html..." relative_path_to_readme = "README.md" relative_path_to_index = "index.html" # `r` means we're using the "read" mode with the file # we need a String for Redcarpet, it doesn't accept File objects. string = File.open(relative_path_to_readme, 'r') { |file| file.read } markdown = ::Redcarpet::Markdown.new(Redcarpet::Render::HTML, extensions = {}) rendered_markdown = markdown.render(string) html_output = template { rendered_markdown } File.open(relative_path_to_index, 'w') { |file| file.write(html_output) } puts "All done!" end private def template(&block) <<-HTML.gsub /^\s+/, "" Keep a Changelog
#{yield}
HTML end end