Class: Eapi::DefinitionRunners::Runner
- Inherits:
-
Object
- Object
- Eapi::DefinitionRunners::Runner
- Defined in:
- lib/eapi/definition_runners/runner.rb
Class Method Summary collapse
- .allow_raw(klass:, field:, allow_raw:) ⇒ Object
- .init(klass:, field:, type:) ⇒ Object
- .multiple_accessor(klass:, field:) ⇒ Object
- .multiple_clearer(klass:, field:) ⇒ Object
- .required(klass:, field:) ⇒ Object
- .unique(klass:, field:) ⇒ Object
- .validate_element_type(klass:, field:, element_type:) ⇒ Object
- .validate_element_with(klass:, field:, validate_element_with:) ⇒ Object
- .validate_type(klass:, field:, type:) ⇒ Object
- .validate_with(klass:, field:, validate_with:) ⇒ Object
Class Method Details
.allow_raw(klass:, field:, allow_raw:) ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/eapi/definition_runners/runner.rb', line 59 def self.allow_raw(klass:, field:, allow_raw:) if allow_raw klass.send :property_allow_raw, field else klass.send :property_disallow_raw, field end end |
.init(klass:, field:, type:) ⇒ Object
67 68 69 |
# File 'lib/eapi/definition_runners/runner.rb', line 67 def self.init(klass:, field:, type:) klass.send :define_init, field, type end |
.multiple_accessor(klass:, field:) ⇒ Object
71 72 73 |
# File 'lib/eapi/definition_runners/runner.rb', line 71 def self.multiple_accessor(klass:, field:) klass.send :define_multiple_accessor, field end |
.multiple_clearer(klass:, field:) ⇒ Object
75 76 77 |
# File 'lib/eapi/definition_runners/runner.rb', line 75 def self.multiple_clearer(klass:, field:) klass.send :define_multiple_clearer, field end |
.required(klass:, field:) ⇒ Object
42 43 44 |
# File 'lib/eapi/definition_runners/runner.rb', line 42 def self.required(klass:, field:) klass.send :validates_presence_of, field end |
.unique(klass:, field:) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/eapi/definition_runners/runner.rb', line 46 def self.unique(klass:, field:) klass.send :validates_each, field do |record, attr, value| if value.respond_to?(:group_by) grouped = value.group_by { |i| i } repeated_groups = grouped.select { |k, v| v.size > 1 } unless repeated_groups.empty? repeated = Hash[repeated_groups.map { |k, v| [k, v.size] }] record.errors.add(attr, "elements must be unique (repeated elements: #{repeated})") end end end end |
.validate_element_type(klass:, field:, element_type:) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/eapi/definition_runners/runner.rb', line 29 def self.validate_element_type(klass:, field:, element_type:) klass.send :validates_each, field do |record, attr, value| allow_raw = klass.property_allow_raw?(field) if value.respond_to?(:each) value.each do |v| unless Eapi::TypeChecker.new(element_type, allow_raw).is_valid_type?(v) record.errors.add(attr, "element must be a #{element_type}") end end end end end |
.validate_element_with(klass:, field:, validate_element_with:) ⇒ Object
4 5 6 7 8 9 10 11 12 |
# File 'lib/eapi/definition_runners/runner.rb', line 4 def self.validate_element_with(klass:, field:, validate_element_with:) klass.send :validates_each, field do |record, attr, value| if value.respond_to?(:each) value.each do |v| validate_element_with.call(record, attr, v) end end end end |
.validate_type(klass:, field:, type:) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/eapi/definition_runners/runner.rb', line 14 def self.validate_type(klass:, field:, type:) klass.send :validates_each, field do |record, attr, value| allow_raw = klass.property_allow_raw?(field) unless Eapi::TypeChecker.new(type, allow_raw).is_valid_type?(value) record.errors.add(attr, "must be a #{type}") end end end |
.validate_with(klass:, field:, validate_with:) ⇒ Object
23 24 25 26 27 |
# File 'lib/eapi/definition_runners/runner.rb', line 23 def self.validate_with(klass:, field:, validate_with:) klass.send :validates_each, field do |record, attr, value| validate_with.call(record, attr, value) end end |