class Keisan::AST::Builder
Public Class Methods
new(string: nil, parser: nil, components: nil)
click to toggle source
Build from parser
# File lib/keisan/ast/builder.rb, line 5 def initialize(string: nil, parser: nil, components: nil) if [string, parser, components].select(&:nil?).size != 2 raise Exceptions::InternalError.new("Require one of string, parser or components") end if !string.nil? @components = Parser.new(string: string).components elsif !parser.nil? @components = parser.components else @components = Array(components) end @lines = Util.array_split(@components) {|component| component.is_a?(Parsing::LineSeparator) }.reject(&:empty?) @line_builders = @lines.map {|line| LineBuilder.new(line)} if @line_builders.size == 1 @node = @line_builders.first.ast else @node = MultiLine.new(@line_builders.map(&:ast)) end end
Public Instance Methods
ast()
click to toggle source
# File lib/keisan/ast/builder.rb, line 35 def ast node end
node()
click to toggle source
# File lib/keisan/ast/builder.rb, line 31 def node @node end