Class: Token::Resolver::Transform
- Inherits:
-
Object
- Object
- Token::Resolver::Transform
- Defined in:
- lib/token/resolver/transform.rb
Overview
Transforms the raw parslet parse tree into Node::Text and Node::Token objects.
The grammar produces one :text entry per character and :token entries
with :seg captures. This transform converts those into proper node objects
and coalesces adjacent Text nodes into single nodes.
Class Method Summary collapse
-
.apply(tree, config) ⇒ Array<Node::Text, Node::Token>
Transform a parslet tree into an array of Text and Token nodes.
Class Method Details
.apply(tree, config) ⇒ Array<Node::Text, Node::Token>
Transform a parslet tree into an array of Text and Token nodes.
26 27 28 29 30 31 32 33 34 |
# File 'lib/token/resolver/transform.rb', line 26 def apply(tree, config) return [] if tree.nil? || (tree.respond_to?(:empty?) && tree.empty?) # Convert raw parslet entries to node objects raw_nodes = tree.map { |entry| convert_entry(entry, config) } # Coalesce adjacent Text nodes coalesce(raw_nodes) end |