class GrapeApiary::Parameter

Attributes

full_name[R]
name[R]
route[R]
settings[R]

Public Class Methods

new(route, name, options) click to toggle source
# File lib/grape-apiary/parameter.rb, line 7
def initialize(route, name, options)
  @full_name = name
  @name      = name
  @name      = name.scan(/\[(.*)\]/).flatten.first if name.include?('[')
  @route     = route
  @settings  = parse_options(options)
end

Public Instance Methods

desc() click to toggle source
# File lib/grape-apiary/parameter.rb, line 23
def desc
  settings[:desc]
end
description() click to toggle source
# File lib/grape-apiary/parameter.rb, line 35
def description
  "#{name} (#{requirement}, #{type}, `#{example}`) ... #{desc}"
end
documentation() click to toggle source
# File lib/grape-apiary/parameter.rb, line 27
def documentation
  settings[:documentation]
end
example() click to toggle source
# File lib/grape-apiary/parameter.rb, line 31
def example
  documentation ? documentation[:example] : nil
end
requirement() click to toggle source
# File lib/grape-apiary/parameter.rb, line 15
def requirement
  settings[:requirement]
end
type() click to toggle source
# File lib/grape-apiary/parameter.rb, line 19
def type
  settings[:type]
end

Private Instance Methods

default_options() click to toggle source
# File lib/grape-apiary/parameter.rb, line 49
def default_options
  model = name.include?('_id') ? name.gsub('_id', '') : route.route_model

  {
    required:       true,
    requirement:    'required',
    type:           'uuid',
    desc:           "the `id` of the `#{model}`",
    documentation:  {
      example:      GrapeApiary::Config.generate_id
    }
  }
end
parse_options(options) click to toggle source
# File lib/grape-apiary/parameter.rb, line 41
def parse_options(options)
  options = default_options if options.blank?

  options[:requirement] = options[:required] ? 'required' : 'optional'

  options
end