Module: Foxtail::Bundle::Parser::AST
- Defined in:
- lib/foxtail/bundle/parser/ast.rb
Overview
Ruby port of fluent-bundle/src/ast.ts type system Data class-based implementation for immutability and type safety
Defined Under Namespace
Classes: Comment, FunctionReference, Junk, Message, MessageReference, NamedArgument, NumberLiteral, SelectExpression, StringLiteral, Term, TermReference, VariableReference, Variant
Instance Attribute Summary collapse
-
#annotations ⇒ Object
readonly
- Array<Hash>
-
Parser annotations/errors.
-
#content ⇒ Object
readonly
- String
-
The comment text.
Class Method Summary collapse
-
.complex_pattern?(node) ⇒ Boolean
Check if node is a complex pattern (array of pattern elements).
-
.expression?(node) ⇒ Boolean
Check if node is an expression.
-
.literal?(node) ⇒ Boolean
Check if node is a literal (string or number).
-
.pattern?(node) ⇒ Boolean
Check if node is any valid pattern.
-
.pattern_element?(node) ⇒ Boolean
Check if node can be a pattern element.
Instance Attribute Details
#annotations ⇒ Object (readonly)
- Array<Hash>
-
Parser annotations/errors
133 |
# File 'lib/foxtail/bundle/parser/ast.rb', line 133 Junk = Data.define(:content, :annotations) |
#content ⇒ Object (readonly)
- String
-
The comment text
133 |
# File 'lib/foxtail/bundle/parser/ast.rb', line 133 Junk = Data.define(:content, :annotations) |
Class Method Details
.complex_pattern?(node) ⇒ Boolean
Check if node is a complex pattern (array of pattern elements)
159 |
# File 'lib/foxtail/bundle/parser/ast.rb', line 159 def self.complex_pattern?(node) = node.is_a?(Array) && node.all? {|el| pattern_element?(el) } |
.expression?(node) ⇒ Boolean
Check if node is an expression
145 146 147 148 149 150 151 152 153 |
# File 'lib/foxtail/bundle/parser/ast.rb', line 145 def self.expression?(node) return true if literal?(node) node.is_a?(VariableReference) || node.is_a?(TermReference) || node.is_a?(MessageReference) || node.is_a?(FunctionReference) || node.is_a?(SelectExpression) end |
.literal?(node) ⇒ Boolean
Check if node is a literal (string or number)
142 |
# File 'lib/foxtail/bundle/parser/ast.rb', line 142 def self.literal?(node) = node.is_a?(StringLiteral) || node.is_a?(NumberLiteral) |
.pattern?(node) ⇒ Boolean
Check if node is any valid pattern
162 |
# File 'lib/foxtail/bundle/parser/ast.rb', line 162 def self.pattern?(node) = node.is_a?(String) || complex_pattern?(node) |
.pattern_element?(node) ⇒ Boolean
Check if node can be a pattern element
156 |
# File 'lib/foxtail/bundle/parser/ast.rb', line 156 def self.pattern_element?(node) = node.is_a?(String) || expression?(node) |