Class: TypedParameter::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/typed_parameter/base.rb

Class Method Summary collapse

Class Method Details

.constraintsObject



41
42
43
# File 'lib/typed_parameter/base.rb', line 41

def constraints
  __constraints.freeze
end

.field(name, type, **kargs) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/typed_parameter/base.rb', line 4

def field(name, type, **kargs)
  if block_given? 
    raise Error::InvalidBlockParameter unless [type].flatten[0].in?([Hash, Object])
    
    block_param_name = "#{self.to_s}_Partial_#{name.to_s.camelize}" 
    class_eval("class ::#{block_param_name} < ::TypedParameter::Base; end")
    block_param = block_param_name.constantize
    yield(block_param)

    if type.is_a?(Array)
      target = [block_param]
    else
      target = block_param
    end
  else
    target = type
  end


  initialize_constraints(name, target, kargs)
  initialize_swagger_properties(name, target, kargs)
end

.permit(params) ⇒ Object

Raises:



27
28
29
30
31
# File 'lib/typed_parameter/base.rb', line 27

def permit(params)
  raise Error, "params class must be ActionController::Parameters" unless params.class <= ActionController::Parameters

  use_constraints(params).permit!
end

.refObject



47
48
49
# File 'lib/typed_parameter/base.rb', line 47

def ref
  "#/components/schemas/#{key}"
end

.swagger_propertiesObject



33
34
35
# File 'lib/typed_parameter/base.rb', line 33

def swagger_properties
  __swagger_properties.freeze
end

.swagger_requirementsObject



37
38
39
# File 'lib/typed_parameter/base.rb', line 37

def swagger_requirements
  __swagger_requirements.freeze
end