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