Class: RedParse::BeginNode

Inherits:
ValueNode show all
Includes:
HasRescue
Defined in:
lib/redparse/node.rb

Constant Summary

Constants included from FlattenedIvars

FlattenedIvars::EXCLUDED_IVARS

Instance Attribute Summary collapse

Attributes inherited from Node

#endline, #errors, #offset, #parent, #startline

Attributes included from Stackable::Meta

#boolean_identity_params, #identity_params

Instance Method Summary collapse

Methods included from HasRescue

#parsetree_and_rescues, #unparse_and_rescues

Methods inherited from Node

#+, #+@, #==, [], #[]=, #add_parent_links!, create, #data, #deep_copy, #delete_extraneous_ivars!, #delete_linenums!, #depthwalk, #depthwalk_nodes, #error?, #evalable_inspect, #fixup_multiple_assignments!, #fixup_rescue_assignments!, #initialize_ivars, inline_symbols, #inspect, #lhs_unparse, #linerange, #lvars_defined_in, #merge_replacement_session, namelist, #negate, #original_brackets_assign, param_names, #parsetrees, #pretty_print, #prohibit_fixup, #replace_ivars_and_self, #replace_value, #to_parsetree, #to_parsetree_and_warnings, #unary, #walk, #xform_tree!

Methods included from Stackable::Meta

#build_exemplars, #enumerate_exemplars, #identity_param

Methods included from FlattenedIvars

#flattened_ivars, #flattened_ivars_equal?

Methods included from Stackable

#identity_name

Constructor Details

#initialize(*args) ⇒ BeginNode

Returns a new instance of BeginNode.



1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
# File 'lib/redparse/node.rb', line 1988

def initialize(*args)
  @offset=args.first.offset
  @empty_ensure=@empty_else=@op_rescue=nil
  body,rescues,else_,ensure_=*args[1...-1]
  rescues.extend ListInNode
  if else_
    else_=else_.val or @empty_else=true
  end
  if ensure_
    ensure_=ensure_.val or @empty_ensure=true
  end
  replace [body,rescues,else_,ensure_]
end

Instance Attribute Details

#after_commaObject

Returns the value of attribute after_comma.



2008
2009
2010
# File 'lib/redparse/node.rb', line 2008

def after_comma
  @after_comma
end

#after_equalsObject

Returns the value of attribute after_equals.



2008
2009
2010
# File 'lib/redparse/node.rb', line 2008

def after_equals
  @after_equals
end

#empty_elseObject (readonly)

Returns the value of attribute empty_else.



2007
2008
2009
# File 'lib/redparse/node.rb', line 2007

def empty_else
  @empty_else
end

#empty_ensureObject (readonly)

Returns the value of attribute empty_ensure.



2007
2008
2009
# File 'lib/redparse/node.rb', line 2007

def empty_ensure
  @empty_ensure
end

Instance Method Details

#begin_parsetree(o) ⇒ Object



2043
2044
2045
2046
2047
2048
2049
# File 'lib/redparse/node.rb', line 2043

def begin_parsetree(o)
  body,rescues,else_,ensure_=*self
  needbegin=(rescues&&!rescues.empty?) || ensure_ || @empty_ensure
  result=parsetree(o)
  needbegin and result=[:begin, result] unless result.first==:begin
  result
end

#imageObject



2012
# File 'lib/redparse/node.rb', line 2012

def image; '(begin)' end

#lvalueObject



2051
2052
2053
# File 'lib/redparse/node.rb', line 2051

def lvalue
  return nil
end

#non_emptyObject



2016
2017
2018
# File 'lib/redparse/node.rb', line 2016

def non_empty
  rescues.size > 0 or !!ensures or body
end

#op?Boolean

Returns:

  • (Boolean)


2002
# File 'lib/redparse/node.rb', line 2002

def op?; false end

#parsetree(o) ⇒ Object



2027
2028
2029
2030
2031
2032
2033
2034
2035
# File 'lib/redparse/node.rb', line 2027

def parsetree(o)
  result=parsetree_and_rescues(o)
  if o[:ruby187] and result.first==:begin
    result=result[1]
  else
    result=[:begin,result] unless result==[:nil]#||result.first==:begin
  end
  return result
end

#rescue_parsetree(o) ⇒ Object



2037
2038
2039
2040
2041
# File 'lib/redparse/node.rb', line 2037

def rescue_parsetree o
  result=parsetree o
  result.first==:begin and result=result.last unless o[:ruby187]
  result
end

#special_conditions!Object



2014
# File 'lib/redparse/node.rb', line 2014

def special_conditions!; nil end

#to_lispObject



2022
2023
2024
2025
# File 'lib/redparse/node.rb', line 2022

def to_lisp
  huh #what about rescues, else, ensure?
  body.to_lisp
end

#unparse(o = default_unparse_options) ⇒ Object

attr_accessor :lvalue



2056
2057
2058
2059
2060
# File 'lib/redparse/node.rb', line 2056

def unparse(o=default_unparse_options)
    result="begin "
    result+=unparse_and_rescues(o)
    result+=";end"
end