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