class RedParse::ListInNode::ForNode
Public Class Methods
new(forword,for_,inword,in_,doword,do_,endword)
click to toggle source
Calls superclass method
RedParse::ListInNode::Node::new
# File lib/redparse/node.rb, line 4594 def initialize(forword,for_,inword,in_,doword,do_,endword) @offset=forword.offset #elide 1 layer of parens if present for_=for_.first if ParenedNode===for_ for_=CommaOpNode===for_ ? Array.new(for_) : [for_] super(BlockParams.new(for_),in_,do_) end
Public Instance Methods
image()
click to toggle source
# File lib/redparse/node.rb, line 4606 def image; "(for)" end
parsetree(o)
click to toggle source
# File lib/redparse/node.rb, line 4614 def parsetree(o) =begin case vars=@data[0] when Node: vars=vars.parsetree(o) if vars.first==:call vars[0]=:attrasgn vars[2]="#{vars[2]}=".to_sym end vars when Array: vars=[:masgn, [:array, *vars.map{|lval| res=lval.parsetree(o) res[0]=lval.varname2assigntype if VarNode===lval res } ]] when VarNode ident=vars.ident vars=vars.parsetree(o) (vars[0]=vars.varname2assigntype) rescue nil else fail end =end vars=self.for.lvalue_parsetree(o) collection= self.in.begin_parsetree(o) if ParenedNode===self.in and collection.first==:begin assert collection.size==2 collection=collection[1] end result=[:for, collection, vars] result.push self.do.parsetree(o) if self.do result end
unparse(o=default_unparse_options)
click to toggle source
# File lib/redparse/node.rb, line 4608 def unparse o=default_unparse_options result=unparse_nl(self,o,"")+" for #{iterator.lhs_unparse(o)[1...-1]} in #{enumerable.unparse o}" result+=unparse_nl(body,o)+" #{body.unparse(o)}" if body result+=";end" end