Module: RubyReactor::Dsl::ValidationHelpers

Included in:
Reactor::ClassMethods, StepBuilder
Defined in:
lib/ruby_reactor/dsl/validation_helpers.rb

Instance Method Summary collapse

Instance Method Details

#build_args_validator(inline_rules, validate_input) ⇒ Object

Compose per-argument inline rules with an optional ‘validate_args` block / pre-built schema. Returns nil when there is nothing to validate.



41
42
43
44
45
46
47
48
49
# File 'lib/ruby_reactor/dsl/validation_helpers.rb', line 41

def build_args_validator(inline_rules, validate_input)
  return nil if inline_rules.empty? && validate_input.nil?

  check_dry_validation_available!
  schema = RubyReactor::Validation::SchemaBuilder.build_args(inline_rules, validate_input)
  return nil unless schema

  RubyReactor::Validation::InputValidator.new(schema)
end

#build_inline_validator(name, type, optional, predicates) ⇒ Object

Form 1 / 1b — inline scalar or class type for a single named value.



26
27
28
29
30
# File 'lib/ruby_reactor/dsl/validation_helpers.rb', line 26

def build_inline_validator(name, type, optional, predicates)
  check_dry_validation_available!
  schema = RubyReactor::Validation::SchemaBuilder.build_inline(name, type, optional, predicates)
  RubyReactor::Validation::InputValidator.new(schema)
end

#build_macro_validator(name, optional, &block) ⇒ Object

Form 2 — block bound to the value’s macro (‘required`/`optional`).



33
34
35
36
37
# File 'lib/ruby_reactor/dsl/validation_helpers.rb', line 33

def build_macro_validator(name, optional, &block)
  check_dry_validation_available!
  schema = RubyReactor::Validation::SchemaBuilder.build_macro(name, optional, &block)
  RubyReactor::Validation::InputValidator.new(schema)
end

#build_scalar_validator(type, predicates) ⇒ Object

Scalar-aware single-value validator (used by ‘validate_output`). The value is wrapped under `:value` before validation.



53
54
55
56
57
# File 'lib/ruby_reactor/dsl/validation_helpers.rb', line 53

def build_scalar_validator(type, predicates)
  check_dry_validation_available!
  schema = RubyReactor::Validation::SchemaBuilder.build_inline(:value, type, false, predicates)
  RubyReactor::Validation::InputValidator.new(schema, wrap_key: :value)
end

#build_validation_schema(&block) ⇒ Object

Validation helper methods



7
8
9
10
# File 'lib/ruby_reactor/dsl/validation_helpers.rb', line 7

def build_validation_schema(&block)
  check_dry_validation_available!
  RubyReactor::Validation::SchemaBuilder.build_from_block(&block)
end

#create_input_validator(schema_or_block) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ruby_reactor/dsl/validation_helpers.rb', line 12

def create_input_validator(schema_or_block)
  check_dry_validation_available!

  schema = case schema_or_block
           when Proc
             build_validation_schema(&schema_or_block)
           else
             schema_or_block
           end

  RubyReactor::Validation::InputValidator.new(schema)
end