Sha256: 398ddf3fa40054ce195a88b295ce503942a6734c68bdf5177174b29f6ed82483

Contents?: true

Size: 985 Bytes

Versions: 7

Compression:

Stored size: 985 Bytes

Contents

module SoberSwag
  module Reporting
    module Input
      ##
      # Specify that a value must be included in a list of possible values.
      class Enum < Base
        def initialize(input, values)
          @input = input
          @values = values
        end

        ##
        # @return [Interface] base type
        attr_reader :input

        ##
        # @return [Array<String>] acceptable types
        attr_reader :values

        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

        def swagger_schema
          schema, found = input.swagger_schema

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

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
sober_swag-0.25.2 lib/sober_swag/reporting/input/enum.rb
sober_swag-0.25.1 lib/sober_swag/reporting/input/enum.rb
sober_swag-0.25.0 lib/sober_swag/reporting/input/enum.rb
sober_swag-0.24.1 lib/sober_swag/reporting/input/enum.rb
sober_swag-0.24.0 lib/sober_swag/reporting/input/enum.rb
sober_swag-0.23.0 lib/sober_swag/reporting/input/enum.rb
sober_swag-0.22.0 lib/sober_swag/reporting/input/enum.rb