class TL1::AST::ColonSeparatedVariables

A sequence of fields or groups of fields separated by colons. This is the “root” AST node for every input message and every record in an output message.

Public Class Methods

new(*fields) click to toggle source
# File lib/tl1/ast.rb, line 111
def initialize(*fields)
  @fields = fields
end
parse(source) click to toggle source
# File lib/tl1/ast.rb, line 100
def self.parse(source)
  elements =
    if source.is_a?(String)
      AST.split(source, ':')
    else
      source.fetch('fields')
    end

  new(*elements.map { |e| AST.colon_separated_element(e) })
end

Public Instance Methods

as_json() click to toggle source
Calls superclass method TL1::AST::Node#as_json
# File lib/tl1/ast.rb, line 115
def as_json
  super(@fields.map(&:as_json))
end
format(**kwargs) click to toggle source
# File lib/tl1/ast.rb, line 119
def format(**kwargs)
  fields.map { |f| f.format(**kwargs) }.join(':')
end
parse(record_source, record: {}) click to toggle source
# File lib/tl1/ast.rb, line 123
def parse(record_source, record: {})
  pairs = AST.split(record_source, ':').zip(@fields)

  pairs.each do |fragment, node|
    node.parse(fragment, record: record)
  end

  record
end