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.
51 52 53 54 55 56 |
# File 'lib/dry/schema/predicate.rb', line 51 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.
45 46 47 |
# File 'lib/dry/schema/predicate.rb', line 45 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.
48 49 50 |
# File 'lib/dry/schema/predicate.rb', line 48 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.
39 40 41 |
# File 'lib/dry/schema/predicate.rb', line 39 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.
42 43 44 |
# File 'lib/dry/schema/predicate.rb', line 42 def name @name end |
Instance Method Details
#! ⇒ Negation
Negate a predicate
66 67 68 |
# File 'lib/dry/schema/predicate.rb', line 66 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.
71 72 73 74 75 |
# File 'lib/dry/schema/predicate.rb', line 71 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
89 90 91 |
# File 'lib/dry/schema/predicate.rb', line 89 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
80 81 82 |
# File 'lib/dry/schema/predicate.rb', line 80 def to_rule compiler.visit(to_ast) end |