Sha256: 5a9f129d099eb4b4e87f1f5845ba248db76cda217f50d7cdc03aba319e1f91ff

Contents?: true

Size: 799 Bytes

Versions: 7

Compression:

Stored size: 799 Bytes

Contents

module SoberSwag
  module Reporting
    module Input
      ##
      # An input that should be "referenced" in the final schema.
      class Referenced < Base
        def initialize(value, reference)
          @value = value
          @reference = reference
        end

        ##
        # @return [Interface] the actual input
        attr_reader :value
        ##
        # @return [String] key in the components hash
        attr_reader :reference

        def call(input)
          @value.call(input)
        end

        def swagger_schema
          [
            { "$ref": ref_path },
            { reference => proc { value.swagger_schema } }
          ]
        end

        private

        def ref_path
          "#/components/schemas/#{reference}"
        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/referenced.rb
sober_swag-0.25.1 lib/sober_swag/reporting/input/referenced.rb
sober_swag-0.25.0 lib/sober_swag/reporting/input/referenced.rb
sober_swag-0.24.1 lib/sober_swag/reporting/input/referenced.rb
sober_swag-0.24.0 lib/sober_swag/reporting/input/referenced.rb
sober_swag-0.23.0 lib/sober_swag/reporting/input/referenced.rb
sober_swag-0.22.0 lib/sober_swag/reporting/input/referenced.rb