class SoberSwag::Reporting::Input::Enum

Specify that a value must be included in a list of possible values.

Attributes

input[R]

@return [Interface] base type

values[R]

@return [Array<String>] acceptable types

Public Class Methods

new(input, values) click to toggle source
# File lib/sober_swag/reporting/input/enum.rb, line 7
def initialize(input, values)
  @input = input
  @values = values
end

Public Instance Methods

call(value) click to toggle source
# File lib/sober_swag/reporting/input/enum.rb, line 20
def call(value)
  inner = input.call(value)

  return inner if inner.is_a?(Report::Base)

  return Report::Value.new(['was not an acceptable enum member']) unless values.include?(inner)

  inner
end
swagger_schema() click to toggle source
# File lib/sober_swag/reporting/input/enum.rb, line 30
def swagger_schema
  schema, found = input.swagger_schema

  merged =
    if schema.key?(:$ref)
      { allOf: [schema] }
    else
      schema
    end.merge(enum: values)
  [merged, found]
end