class RSpec::Apib::Writer
Public Class Methods
new(doc)
click to toggle source
# File lib/rspec/apib/writer.rb, line 4 def initialize(doc) @apib = doc end
Public Instance Methods
write()
click to toggle source
# File lib/rspec/apib/writer.rb, line 8 def write data = [] data << pre_docs data << build data << post_docs write_to_file data.join("\n\n") end
Private Instance Methods
build()
click to toggle source
# File lib/rspec/apib/writer.rb, line 36 def build apib = "" sorted_apib.each do |group_name, group| apib += "# Group #{group_name}\n\n" group.each do |action, data| apib += "## #{action}\n\n" if data[:request][:params] && data[:request][:params].length > 0 apib += "+ Parameters\n\n" data[:request][:params].each do |name, param| required = param[:required] ? 'required' : 'optional' value = param[:value] apib += " + #{name} (#{required}, string, `#{value}`) ...\n" end apib += "\n" end apib += "+ Request\n\n" apib += "#{data[:request][:description].indent(2, ' ')}\n\n" if data[:request][:description] apib += " + Headers\n\n" data[:request][:headers].each do |header, value| apib += " #{header}: #{value}\n" end apib += "\n" unless data[:request][:body].blank? apib += " + Body\n\n" apib += data[:request][:body].to_s.indent(12) apib += "\n\n" end data[:response].sort { |a, b| a[:status] - b[:status] }.each do |response| apib += "+ Response #{response[:status]}\n\n" apib += "#{response[:description].indent(2, ' ')}\n\n" if response[:description] apib += " + Headers\n\n" response[:headers].each do |header, value| apib += " #{header}: #{value}\n" end apib += "\n" unless response[:body].blank? apib += " + Body\n\n" apib += response[:body].to_s.indent(12) apib += "\n\n" end end end end apib end
post_docs()
click to toggle source
# File lib/rspec/apib/writer.rb, line 28 def post_docs RSpec::Apib.config.post_docs.map { |f| File.read(f) }.join("\n\n") end
pre_docs()
click to toggle source
# File lib/rspec/apib/writer.rb, line 24 def pre_docs RSpec::Apib.config.pre_docs.map { |f| File.read(f) }.join("\n\n") end
sorted_apib()
click to toggle source
# File lib/rspec/apib/writer.rb, line 32 def sorted_apib @apib.to_a.sort { |a, b| a[0] <=> b[0] } end
write_to_file(data)
click to toggle source
# File lib/rspec/apib/writer.rb, line 18 def write_to_file(data) File.open(RSpec::Apib.config.dest_file, 'w') do |file| file.write(data) end end