Sha256: 81daac3516a14090c030ad13aac70cf6167daf3347b46332e33b8e9775faf977

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

require "ostruct"

require "openapi3_parser/node_factory/object_factory/field_config"

module Openapi3Parser
  module NodeFactory
    module ObjectFactory
      module Dsl
        def field(name, **options)
          @field_configs ||= {}
          @field_configs[name] = FieldConfig.new(options)
        end

        def field_configs
          @field_configs || {}
        end

        def allow_extensions
          @allow_extensions = true
        end

        def allowed_extensions?
          @allow_extensions == true
        end

        def mutually_exclusive(*fields, required: false)
          @mutually_exclusive ||= []
          @mutually_exclusive << OpenStruct.new(
            fields: fields, required: required
          )
        end

        def mutually_exclusive_fields
          @mutually_exclusive || []
        end

        def validate(*items, &block)
          @validations = (@validations || []).concat(items)
          @validations << block if block
        end

        def validations
          @validations || []
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
openapi3_parser-0.5.1 lib/openapi3_parser/node_factory/object_factory/dsl.rb
openapi3_parser-0.5.0 lib/openapi3_parser/node_factory/object_factory/dsl.rb