class Minjs::ECMA262::StBlock
Base
class of ECMA262
Block element.
@see www.ecma-international.org/ecma-262 ECMA262
12.1
Attributes
Public Class Methods
@param statement_list
[StatementList] statement list
# File lib/minjs/ecma262/statement.rb, line 35 def initialize(statement_list) if statement_list.kind_of? Array @statement_list = StatementList.new(statement_list) else @statement_list = statement_list end end
Public Instance Methods
compare object
# File lib/minjs/ecma262/statement.rb, line 66 def ==(obj) self.class == obj.class and @statement_list == obj.statement_list end
Returns the statement at index @param i index @return [Statement] statement
# File lib/minjs/ecma262/statement.rb, line 133 def [](i) @statement_list[i] end
duplicate object @see Base#deep_dup
# File lib/minjs/ecma262/statement.rb, line 45 def deep_dup self.class.new(@statement_list.deep_dup) end
@return true if block is empty
# File lib/minjs/ecma262/statement.rb, line 124 def empty? @statement_list.statement_list.select{|s| s.class != StEmpty }.length == 0 end
Removes empty statement in this block.
# File lib/minjs/ecma262/statement.rb, line 138 def remove_empty_statement statement_list.remove_empty_statement end
Replaces children object. @see Base#replace
# File lib/minjs/ecma262/statement.rb, line 51 def replace(from, to) if from == @statement_list @statement_list = to end end
Converts block to expression and returns it.
# File lib/minjs/ecma262/statement.rb, line 86 def to_exp(options = {}) @statement_list.statement_list.select{|s| s.class != StEmpty }[0].to_exp.deep_dup end
true if block can convert to expression
# File lib/minjs/ecma262/statement.rb, line 78 def to_exp? t = @statement_list.statement_list.select{|s| s.class != StEmpty } t.length == 1 and t[0].to_exp? end
Returns a ECMAScript string containg the representation of element. @see Base#to_js
# File lib/minjs/ecma262/statement.rb, line 73 def to_js(options = {}) concat(options, "{", @statement_list, "}") end
Converts block to ‘return statement’ and returns it
# File lib/minjs/ecma262/statement.rb, line 119 def to_return to_statement.to_return end
@return true if block can convert to ‘return statement’
# File lib/minjs/ecma262/statement.rb, line 114 def to_return? to_statement? and to_statement.to_return? end
Converts block to single statement and return it.
# File lib/minjs/ecma262/statement.rb, line 101 def to_statement t = @statement_list.statement_list.select{|s| s.class != StEmpty } if t[0] t[0].deep_dup else StEmpty.new end end
@return true if block can convert to single statement.
# File lib/minjs/ecma262/statement.rb, line 93 def to_statement? t = @statement_list.statement_list.select{|s| s.class != StEmpty } t.length == 1 || t.length == 0 end
Traverses this children and itself with given block.
@see Base#traverse
# File lib/minjs/ecma262/statement.rb, line 60 def traverse(parent, &block) @statement_list.traverse(self, &block) yield parent, self end