class Yadriggy::ArrayLiteral

Array literal.

Attributes

elements[R]

@return [Array<ASTnode>] the array elements.

Public Class Methods

new(sexp) click to toggle source
# File lib/yadriggy/ast.rb, line 432
def initialize(sexp)
  if sexp[1].nil?
    @elements = []
  elsif is_percent_literal(sexp[1])
    @elements = sexp[1].map do |e|
      StringInterpolation.new([:string_literal, [:string_content] + e])
    end
  else
    @elements = to_nodes(sexp[1])
  end
  add_children(@elements)
end
tag() click to toggle source
# File lib/yadriggy/ast.rb, line 430
def self.tag() :array end

Public Instance Methods

accept(evaluator) click to toggle source

A method for Visitor pattern. @param [Eval] evaluator the visitor of Visitor pattern. @return [void]

# File lib/yadriggy/ast.rb, line 448
def accept(evaluator)
  evaluator.array(self)
end
const_value() click to toggle source
# File lib/yadriggy/ast_value.rb, line 279
def const_value()
  elements.map {|e| e.const_value }
end
value() click to toggle source
# File lib/yadriggy/ast_value.rb, line 271
def value()
  elements.map {|e| e.value }
end
value_in_class(klass) click to toggle source
# File lib/yadriggy/ast_value.rb, line 275
def value_in_class(klass)
  elements.map {|e| e.value_in_class(klass) }
end

Private Instance Methods

is_percent_literal(sexp) click to toggle source
# File lib/yadriggy/ast.rb, line 454
def is_percent_literal(sexp)
  sexp.is_a?(Array) && sexp.size > 0 &&
  sexp.all? do |e|
    e.is_a?(Array) && e.all? {|ee| ee.is_a?(Array) }
  end
end