Class: Opal::Rewriters::InlineArgs::Initializer
- Inherits:
-
Base
- Object
- Parser::AST::Processor
- Base
- Opal::Rewriters::InlineArgs::Initializer
show all
- Defined in:
- opal/lib/opal/rewriters/inline_args.rb
Constant Summary
collapse
- STEPS =
%i[
extract_blockarg
initialize_shadowargs
extract_args
prepare_post_args
prepare_kwargs
extract_optargs
extract_restarg
extract_post_args
extract_kwargs
extract_kwoptargs
extract_kwrestarg
].freeze
Constants inherited
from Base
Base::DUMMY_LOCATION
Instance Attribute Summary collapse
Attributes inherited from Base
#current_node
Instance Method Summary
collapse
Methods inherited from Base
#append_to_body, #begin_with_stmts, #error, #prepend_to_body, #process, #s, s, #stmts_of
Constructor Details
#initialize(args, type:) ⇒ Initializer
Returns a new instance of Initializer.
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 87
def initialize(args, type:)
@args = Arguments.new(args.children)
@inline = []
@initialization = []
@type = type
@underscore_found = false
STEPS.each do |step|
send(step)
end
if @initialization.any?
@initialization = s(:begin, *@initialization)
else
@initialization = nil
end
end
|
Instance Attribute Details
#initialization ⇒ Object
Returns the value of attribute initialization.
68
69
70
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 68
def initialization
@initialization
end
|
#inline ⇒ Object
Returns the value of attribute inline.
68
69
70
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 68
def inline
@inline
end
|
Instance Method Details
#args_to_keep ⇒ Object
214
215
216
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 214
def args_to_keep
@args.postargs.length
end
|
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 119
def
@args.args.each do |arg|
if @type == :iter
@initialization << arg.updated(:initialize_iter_arg)
if arg.children[0] == :_
if @underscore_found
arg = s(:fake_arg)
end
@underscore_found = true
end
else
end
@inline << arg
end
end
|
107
108
109
110
111
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 107
def
if (arg = @args.blockarg)
@initialization << arg.updated(:extract_blockarg)
end
end
|
164
165
166
167
168
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 164
def
@args.kwargs.each do |arg|
@initialization << arg.updated(:extract_kwarg)
end
end
|
170
171
172
173
174
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 170
def
@args.kwoptargs.each do |arg|
@initialization << arg.updated(:extract_kwoptarg)
end
end
|
176
177
178
179
180
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 176
def
if (arg = @args.kwrestarg)
@initialization << arg.updated(:extract_kwrestarg)
end
end
|
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 190
def
has_post_args = @args.has_post_args?
@args.optargs.each do |arg|
if has_post_args
arg_name, default_value = *arg
@initialization << arg.updated(:extract_post_optarg, [arg_name, default_value, args_to_keep])
@inline << s(:fake_arg)
else
@inline << arg.updated(:arg)
@initialization << arg.updated(:extract_optarg)
end
end
end
|
182
183
184
185
186
187
188
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 182
def
@args.postargs.each do |arg|
@initialization << arg.updated(:extract_post_arg)
@inline << s(:fake_arg)
end
end
|
206
207
208
209
210
211
212
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 206
def
if (arg = @args.restarg)
arg_name = arg.children[0]
@initialization << arg.updated(:extract_restarg, [arg_name, args_to_keep])
@inline << s(:fake_arg)
end
end
|
#initialize_shadowargs ⇒ Object
113
114
115
116
117
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 113
def initialize_shadowargs
@args.shadowargs.each do |arg|
@initialization << arg.updated(:initialize_shadowarg)
end
end
|
#prepare_kwargs ⇒ Object
151
152
153
154
155
156
157
158
159
160
161
162
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 151
def prepare_kwargs
return unless @args.has_any_kwargs?
if @args.can_inline_kwargs?
@inline << s(:arg, :'$kwargs')
else
@initialization << s(:extract_kwargs)
@inline << s(:fake_arg)
end
@initialization << s(:ensure_kwargs_are_kwargs)
end
|
#prepare_post_args ⇒ Object
145
146
147
148
149
|
# File 'opal/lib/opal/rewriters/inline_args.rb', line 145
def prepare_post_args
if @args.has_post_args?
@initialization << s(:prepare_post_args, @args.args.length)
end
end
|