class ApiBlueprintFormatter::ActionFormatter
Parses example metadata for Actions and outputs markdown in accordance with the API Blueprint spec.
Spec: github.com/apiaryio/api-blueprint/blob/master/API%20Blueprint%20Specification.md#def-action-section
Attributes
action_metadata[R]
action_name[R]
Public Class Methods
new(action_name, action_metadata)
click to toggle source
# File lib/api_blueprint/action_formatter.rb, line 9 def initialize(action_name, action_metadata) @action_name = action_name @action_metadata = action_metadata @parameters = action_metadata[:parameters] || [] end
Public Instance Methods
format()
click to toggle source
# File lib/api_blueprint/action_formatter.rb, line 15 def format output = [] output << "## #{action_name}" output << '' output << action_metadata[:description].to_s output << '' output += format_parameters output << '' output.join("\n") end
Private Instance Methods
action_header(param, data)
click to toggle source
# File lib/api_blueprint/action_formatter.rb, line 62 def action_header(param, data) param_signature = "#{param}#{params_example_string(data)}#{param_attributes_string(data)}" multiline_description = !members(param).empty? header = "+ #{param_signature}" header += " - #{data[:description]}" unless multiline_description header end
format_members(param)
click to toggle source
# File lib/api_blueprint/action_formatter.rb, line 87 def format_members(param) out = [] unless members(param).empty? out << indent_lines(8, '+ Members') members(param).each do |member| out << indent_lines(12, "+ `#{member}`") end end out end
format_param(param, data)
click to toggle source
# File lib/api_blueprint/action_formatter.rb, line 42 def format_param(param, data) out = [] out << indent_lines(4, action_header(param, data)) if multiline_description(param) out << '' out << indent_lines(8, data[:description]) out << '' end out << indent_lines(8, "+ Default: #{data[:default]}") if data[:default] out += format_members(param) out end
format_parameters()
click to toggle source
# File lib/api_blueprint/action_formatter.rb, line 29 def format_parameters return [] if @parameters.empty? output = [''] output << '+ Parameters' @parameters.each_pair do |param, data| output += format_param(param, data) end output << '' output end
members(param)
click to toggle source
# File lib/api_blueprint/action_formatter.rb, line 83 def members(param) @action_metadata[:parameters][param].fetch(:members, []) end
multiline_description(param)
click to toggle source
# File lib/api_blueprint/action_formatter.rb, line 58 def multiline_description(param) members(param).size > 0 end
param_attributes_string(data)
click to toggle source
# File lib/api_blueprint/action_formatter.rb, line 71 def param_attributes_string(data) optional = data[:optional] ? 'optional' : nil param_attributes = [data[:type], optional].compact " (#{param_attributes.join(', ')})" unless param_attributes.empty? end
params_example_string(data)
click to toggle source
# File lib/api_blueprint/action_formatter.rb, line 78 def params_example_string(data) return '' unless data[:example] ": #{data[:example]}" end