Class: ServiceOperation::Params::DSL

Inherits:
Object
  • Object
show all
Defined in:
lib/service_operation/params/dsl.rb

Overview

Build Attribute DSL

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDSL

Returns a new instance of DSL.



17
18
19
# File 'lib/service_operation/params/dsl.rb', line 17

def initialize
  @attributes = []
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object (private)



64
65
66
67
68
69
70
# File 'lib/service_operation/params/dsl.rb', line 64

def method_missing(name, *args)
  if respond_to_missing?(name)
    def_attr(name, *args)
  else
    super
  end
end

Class Method Details

.run { ... } ⇒ Array<Attribute>

Yields:

  • to the block containing the DSL

Returns:



11
12
13
14
15
# File 'lib/service_operation/params/dsl.rb', line 11

def self.run(&block)
  dsl = new
  dsl.instance_eval(&block)
  dsl.instance_variable_get('@attributes').freeze
end

Instance Method Details

#_query_params(default_sort: 'id') ⇒ Object

@todo: move



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/service_operation/params/dsl.rb', line 46

def _query_params(default_sort: 'id')
  id :integer, optional: true
  ids [:integer], optional: true

  filter :hash, optional: true,
                coerce: ->(f) { f.is_a?(Hash) ? f : Array(f).map { [f, nil] }.to_h }

  includes [:string], optional: true
  page :hash, optional: true, coerce: :json_api_page
  sort :string, optional: true, default: default_sort
end

#Any(*subvalidators) ⇒ Object

rubocop:disable Naming/MethodName



23
24
25
# File 'lib/service_operation/params/dsl.rb', line 23

def Any(*subvalidators)
  Any.new(subvalidators)
end

#AnythingObject



27
28
29
# File 'lib/service_operation/params/dsl.rb', line 27

def Anything
  Anything
end

#ArrayOf(element_validator) ⇒ Object



31
32
33
# File 'lib/service_operation/params/dsl.rb', line 31

def ArrayOf(element_validator)
  ArrayOf.new(element_validator)
end

#BoolObject



35
36
37
# File 'lib/service_operation/params/dsl.rb', line 35

def Bool
  Bool
end

#EnumerableOf(element_validator) ⇒ Object



39
40
41
# File 'lib/service_operation/params/dsl.rb', line 39

def EnumerableOf(element_validator)
  EnumerableOf.new(element_validator)
end