Class: Chelsy::Syntax::Any

Inherits:
Constraint show all
Defined in:
lib/chelsy/syntax.rb

Overview

This constraint instance is composed of multiple constraints.

Instance Attribute Summary

Attributes inherited from Constraint

#name

Instance Method Summary collapse

Methods inherited from Constraint

#===, #ensure

Constructor Details

#initialize(name, constraints) ⇒ Any

Initialize an instance with constraints.

Parameters:

  • name (String)

    the name of this constraint

  • constraints (Array<Constraint>)

    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

Returns:

  • (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