Class: Chelsy::Syntax::Any
- Inherits:
-
Constraint
- Object
- Constraint
- Chelsy::Syntax::Any
- Defined in:
- lib/chelsy/syntax.rb
Overview
This constraint instance is composed of multiple constraints.
Instance Attribute Summary
Attributes inherited from Constraint
Instance Method Summary collapse
- #accept?(node) ⇒ Boolean
- #coerce(node) ⇒ Object
-
#initialize(name, constraints) ⇒ Any
constructor
Initialize an instance with constraints.
Methods inherited from Constraint
Constructor Details
#initialize(name, constraints) ⇒ Any
Initialize an instance with constraints.
77 78 79 80 |
# File 'lib/chelsy/syntax.rb', line 77 def initialize(name, constraints) @constraints = constraints.dup super name end |
Instance Method Details
#accept?(node) ⇒ Boolean
91 92 93 |
# File 'lib/chelsy/syntax.rb', line 91 def accept?(node) @constraints.any? {|constraint| constraint === node} || super(node) end |
#coerce(node) ⇒ Object
82 83 84 85 86 87 88 89 |
# File 'lib/chelsy/syntax.rb', line 82 def coerce(node) @constraints .lazy .find_all {|c| c.respond_to?(:coerce) } .map {|c| c.coerce(node) } .reject(&:nil?) .first end |