Class: Musa::GenerativeGrammar::Implementation::ConditionNode Private

Inherits:
Node
  • Object
show all
Defined in:
lib/musa-dsl/generative/generative-grammar.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Node that filters child node options by condition.

Applies condition block to filter generated options. Created by Node#limit.

Instance Method Summary collapse

Constructor Details

#initialize(node) {|option| ... } ⇒ ConditionNode

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 ConditionNode.

Parameters:

  • node (Node)

    node to filter

Yields:

  • (option)

    condition block



520
521
522
523
# File 'lib/musa-dsl/generative/generative-grammar.rb', line 520

def initialize(node, &block)
  @node = node
  @block = block
end

Instance Method Details

#_options(parent: nil, &condition) ⇒ 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.



526
527
528
529
530
531
532
533
534
535
536
# File 'lib/musa-dsl/generative/generative-grammar.rb', line 526

def _options(parent: nil, &condition)
  parent ||= []

  r = []

  @node._options(parent: parent, &condition).each do |node_option|
    r << node_option if (!block_given? || yield(parent + node_option)) && @block.call(parent + node_option)
  end

  r
end