Class: Parser::AST::Processor

Inherits:
AST::Processor
  • Object
show all
Defined in:
lib/parser/ast/processor.rb

Instance Method Summary collapse

Instance Method Details

#on_argument(node) ⇒ Object



85
86
87
88
89
90
# File 'lib/parser/ast/processor.rb', line 85

def on_argument(node)
  arg_name, value_node = *node

  value_node = process(value_node) if value_node
  node.updated(nil, [ arg_name, value_node ])
end

#on_case(node) ⇒ Object



184
185
186
187
188
189
190
191
192
193
# File 'lib/parser/ast/processor.rb', line 184

def on_case(node)
  cond_node, *bodies = *node
  when_nodes, else_node = bodies[0..-2], bodies[-1]

  else_node = process(else_node) if else_node
  node.updated(nil, [
    process(cond_node),
    *(process_all(when_nodes) << else_node)
  ])
end

#on_cdecl(node) ⇒ Object



75
76
77
78
79
80
81
# File 'lib/parser/ast/processor.rb', line 75

def on_cdecl(node)
  scope_node, name, value_node = *node

  scope_node = process(scope_node) if scope_node
  value_node = process(value_node)
  node.updated(nil, [ scope_node, name, value_node ])
end

#on_class(node) ⇒ Object



110
111
112
113
114
115
116
117
# File 'lib/parser/ast/processor.rb', line 110

def on_class(node)
  name_node, superclass_node, body_node = *node

  superclass_node = process(superclass_node) if superclass_node
  node.updated(nil, [
    name_node, superclass_node, process(body_node)
  ])
end

#on_const(node) ⇒ Object



68
69
70
71
72
73
# File 'lib/parser/ast/processor.rb', line 68

def on_const(node)
  scope_node, name = *node

  scope_node = process(scope_node) if scope_node
  node.updated(nil, [ scope_node, name ])
end

#on_def(node) ⇒ Object



121
122
123
124
125
126
127
128
# File 'lib/parser/ast/processor.rb', line 121

def on_def(node)
  name, args_node, body_node = *node

  node.updated(nil, [
    name,
    process(args_node), process(body_node)
  ])
end

#on_defs(node) ⇒ Object



130
131
132
133
134
135
136
137
# File 'lib/parser/ast/processor.rb', line 130

def on_defs(node)
  definee_node, name, args_node, body_node = *node

  node.updated(nil, [
    process(definee_node), name,
    process(args_node), process(body_node)
  ])
end

#on_if(node) ⇒ Object



170
171
172
173
174
175
176
177
178
179
180
# File 'lib/parser/ast/processor.rb', line 170

def on_if(node)
  cond_node, if_true_node, if_false_node = *node

  if_true_node  = process(if_true_node)  if if_true_node
  if_false_node = process(if_false_node) if if_false_node

  node.updated(nil, [
    process(cond_node),
    if_true_node, if_false_node
  ])
end

#on_op_asgn(node) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/parser/ast/processor.rb', line 57

def on_op_asgn(node)
  var_node, method_name, value_node = *node

  node.updated(nil, [
    process(var_node), method_name, process(value_node)
  ])
end

#on_resbody(node) ⇒ Object



195
196
197
198
199
200
201
202
203
204
205
# File 'lib/parser/ast/processor.rb', line 195

def on_resbody(node)
  exc_list_node, exc_var_node, body_node = *node

  exc_list_node = process(exc_list_node) if exc_list_node
  exc_var_node  = process(exc_var_node)  if exc_var_node

  node.updated(nil, [
    exc_list_node, exc_var_node,
    process(body_node)
  ])
end

#on_rescue(node) ⇒ Object



207
208
209
210
211
212
213
214
215
216
# File 'lib/parser/ast/processor.rb', line 207

def on_rescue(node)
  body_node, *handlers = *node
  handler_nodes, else_node = handlers[0..-2], handlers[-1]

  else_node = process(else_node) if else_node
  node.updated(nil, [
    process(body_node),
    *(process_all(handler_nodes) << else_node)
  ])
end

#on_send(node) ⇒ Object



142
143
144
145
146
147
148
149
# File 'lib/parser/ast/processor.rb', line 142

def on_send(node)
  receiver_node, method_name, *arg_nodes = *node

  receiver_node = process(receiver_node) if receiver_node
  node.updated(nil, [
    receiver_node, method_name, *process_all(arg_nodes)
  ])
end

#on_var(node) ⇒ Object



20
21
22
23
24
# File 'lib/parser/ast/processor.rb', line 20

def on_var(node)
  name, = *node

  node.updated
end

#on_vasgn(node) ⇒ Object



37
38
39
40
41
42
# File 'lib/parser/ast/processor.rb', line 37

def on_vasgn(node)
  name, value_node = *node

  value_node = process(value_node) if value_node
  node.updated(nil, [ name, value_node ])
end

#process_argument_node(node) ⇒ Object Also known as: on_arg, on_optarg, on_splatarg, on_blockarg, on_kwarg, on_kwoptarg, on_kwsplatarg



92
93
94
# File 'lib/parser/ast/processor.rb', line 92

def process_argument_node(node)
  on_argument(node)
end

#process_regular_node(node) ⇒ Object Also known as: on_dstr, on_dsym, on_regexp, on_xstr, on_splat, on_array, on_pair, on_hash, on_irange, on_erange, on_and_asgn, on_or_asgn, on_mlhs, on_masgn, on_args, on_arg_expr, on_restarg_expr, on_blockarg_expr, on_module, on_sclass, on_undef, on_alias, on_block, on_while, on_until, on_for, on_return, on_break, on_next, on_redo, on_retry, on_super, on_yield, on_defined?, on_not, on_and, on_or, on_when, on_ensure, on_begin



5
6
7
# File 'lib/parser/ast/processor.rb', line 5

def process_regular_node(node)
  node.updated(nil, process_all(node))
end

#process_var_asgn_node(node) ⇒ Object Also known as: on_lvasgn, on_ivasgn, on_gvasgn, on_cvdecl, on_cvasgn



44
45
46
# File 'lib/parser/ast/processor.rb', line 44

def process_var_asgn_node(node)
  on_vasgn(node)
end

#process_variable_node(node) ⇒ Object Also known as: on_lvar, on_ivar, on_gvar, on_cvar, on_back_ref, on_nth_ref



26
27
28
# File 'lib/parser/ast/processor.rb', line 26

def process_variable_node(node)
  on_var(node)
end