Class: Dry::Schema::Predicate
- Inherits:
-
Object
- Object
- Dry::Schema::Predicate
- Includes:
- Logic::Operators
- Defined in:
- lib/dry/schema/predicate.rb
Overview
Predicate objects used within the DSL
Defined Under Namespace
Classes: Negation
Instance Attribute Summary collapse
- #args ⇒ Object readonly private
- #block ⇒ Object readonly private
- #compiler ⇒ Object readonly private
- #name ⇒ Object readonly private
Instance Method Summary collapse
-
#! ⇒ Negation
Negate a predicate.
- #ensure_valid ⇒ Object private
-
#initialize(compiler, name, args, block) ⇒ Predicate
constructor
private
A new instance of Predicate.
-
#to_ast ⇒ Array
(also: #ast)
private
Dump predicate to an AST.
-
#to_rule ⇒ Object
private
Compile predicate to a rule object.
Constructor Details
#initialize(compiler, name, args, block) ⇒ Predicate
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Predicate.
50 51 52 53 54 55 |
# File 'lib/dry/schema/predicate.rb', line 50 def initialize(compiler, name, args, block) @compiler = compiler @name = name @args = args @block = block end |
Instance Attribute Details
#args ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
44 45 46 |
# File 'lib/dry/schema/predicate.rb', line 44 def args @args end |
#block ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
47 48 49 |
# File 'lib/dry/schema/predicate.rb', line 47 def block @block end |
#compiler ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
38 39 40 |
# File 'lib/dry/schema/predicate.rb', line 38 def compiler @compiler end |
#name ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
41 42 43 |
# File 'lib/dry/schema/predicate.rb', line 41 def name @name end |
Instance Method Details
#! ⇒ Negation
Negate a predicate
65 66 67 |
# File 'lib/dry/schema/predicate.rb', line 65 def ! Negation.new(self) end |
#ensure_valid ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
70 71 72 73 74 |
# File 'lib/dry/schema/predicate.rb', line 70 def ensure_valid if compiler.predicates[name].arity - 1 != args.size raise ArgumentError, "#{name} predicate arity is invalid" end end |
#to_ast ⇒ Array Also known as: ast
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Dump predicate to an AST
88 89 90 |
# File 'lib/dry/schema/predicate.rb', line 88 def to_ast(*) [:predicate, [name, compiler.predicates.arg_list(name, *args)]] end |
#to_rule ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Compile predicate to a rule object
79 80 81 |
# File 'lib/dry/schema/predicate.rb', line 79 def to_rule compiler.visit(to_ast) end |