Sha256: 405b25a20c799230efc63e993a3994f69f54fdb6186bd8b0c1ace81e1b96578c

Contents?: true

Size: 1.24 KB

Versions: 4

Compression:

Stored size: 1.24 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?
          if instance_variable_defined?(:@allow_extensions)
            @allow_extensions == true
          else
            false
          end
        end

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

        def mutually_exclusive_fields
          @mutually_exclusive_fields ||= []
        end

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

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
openapi3_parser-0.7.0 lib/openapi3_parser/node_factory/object_factory/dsl.rb
openapi3_parser-0.6.1 lib/openapi3_parser/node_factory/object_factory/dsl.rb
openapi3_parser-0.6.0 lib/openapi3_parser/node_factory/object_factory/dsl.rb
openapi3_parser-0.5.2 lib/openapi3_parser/node_factory/object_factory/dsl.rb