lib/ghost_writer.rb in ghost_writer-0.2.0 vs lib/ghost_writer.rb in ghost_writer-0.3.0

- old
+ new

@@ -6,17 +6,19 @@ module GhostWriter extend ActiveSupport::Concern module Format autoload "Markdown", "ghost_writer/format/markdown" + autoload "Rst", "ghost_writer/format/rst" end - DEFAULT_OUTPUT_DIR = "api_examples" - DOCUMENT_INDEX_FILENAME = "document_index.markdown" + DEFAULT_OUTPUT_DIR = "api_examples".freeze + DEFAULT_FORMAT = :markdown + DOCUMENT_INDEX_FILENAME = "document_index".freeze class << self - attr_writer :output_dir, :output_flag + attr_writer :output_dir, :output_flag, :output_format attr_accessor :github_base_url def document_group @document_group ||= {} @document_group @@ -25,11 +27,11 @@ def generate_api_doc if output_flag unless File.exist?(output_path) FileUtils.mkdir_p(output_path) end - document_index = GhostWriter::DocumentIndex.new(output_path + DOCUMENT_INDEX_FILENAME, document_group) + document_index = GhostWriter::DocumentIndex.new(output_path + "#{DOCUMENT_INDEX_FILENAME}.#{output_format}", document_group, GhostWriter.output_format) document_index.write_file document_group.each do |output, docs| docs.sort_by!(&:description) docs.shift.write_file(true) docs.each(&:write_file) @@ -48,23 +50,29 @@ end def output_path Rails.root + "doc" + output_dir end + + def output_format + @output_format || DEFAULT_FORMAT + end end def collect_example - output = File.join(doc_dir, "#{doc_name}.markdown") + output = File.join(doc_dir, "#{doc_name}.#{GhostWriter.output_format}") document = GhostWriter::Document.new(output, { title: "#{described_class} #{doc_name.titleize}", description: example.full_description.dup, location: example.location.dup, url_example: "#{request.env["REQUEST_METHOD"]} #{request.env["PATH_INFO"]}", param_example: controller.params.reject {|key, val| key == "controller" || key == "action"}, status_example: response.status.inspect, response_example: response.body, + format: GhostWriter.output_format }) + GhostWriter.document_group[output] ||= [] GhostWriter.document_group[output] << document end private @@ -80,10 +88,10 @@ end end included do after do - if example.metadata[:type] == :controller && example.metadata[:generate_api_doc] + if (example.metadata[:type] == :controller || example.metadata[:type] == :request) && example.metadata[:generate_api_doc] collect_example if GhostWriter.output_flag end end end end