class Swaggard::Swagger::Parameters::Query
Public Class Methods
new(string)
click to toggle source
# File lib/swaggard/swagger/parameters/query.rb, line 8 def initialize(string) @in = 'query' parse(string) end
Public Instance Methods
to_doc()
click to toggle source
# File lib/swaggard/swagger/parameters/query.rb, line 13 def to_doc { 'name' => @name, 'in' => @in, 'required' => @is_required, }.tap do |doc| doc.merge!(@type.to_doc) doc.merge!('enum' => @options) if @options.any? doc.merge!('description' => description) end end
Private Instance Methods
parse(string)
click to toggle source
Example: [Array] status Filter by status. (e.g. status[]=1&status=2&status[]=3) Example: [Array] status(required) Filter by status. (e.g. status[]=1&status=2&status[]=3) Example: [Integer] media ID of the desired media type.
# File lib/swaggard/swagger/parameters/query.rb, line 31 def parse(string) data_type, required, name, options_and_description = string.match(/\A\[(\S*)\](!)?\s*([\w\[\]]*)\s*(.*)\Z/).captures allow_multiple = name.gsub!('[]', '') options, description = options_and_description.match(/\A(\[.*\])?(.*)\Z/).captures options = options ? options.gsub(/\[?\]?\s?/, '').split(',') : [] @name = name @description = description @type = Type.new([data_type]) @is_required = required.present? @allow_multiple = allow_multiple.present? @options = options end