class Opal::Rewriters::InlineArgs::Initializer
Constants
- STEPS
Attributes
initialization[R]
inline[R]
Public Class Methods
new(args, type:)
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 87 def initialize(args, type:) @args = Arguments.new(args.children) @inline = [] @initialization = [] @type = type STEPS.each do |step| send(step) end if @initialization.any? @initialization = s(:begin, *@initialization) else @initialization = nil end end
Public Instance Methods
args_to_keep()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 202 def args_to_keep @args.postargs.length end
extract_args()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 118 def extract_args @args.args.each do |arg| if @type == :iter # block args are not required, # so we need to tell compiler that required args # must be initialized with nil-s @initialization << arg.updated(:initialize_iter_arg) else # required inline def argument like 'def m(req)' # no initialization is required end @inline << arg end end
extract_blockarg()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 106 def extract_blockarg if (arg = @args.blockarg) @initialization << arg.updated(:extract_blockarg) end end
extract_kwargs()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 152 def extract_kwargs @args.kwargs.each do |arg| @initialization << arg.updated(:extract_kwarg) end end
extract_kwoptargs()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 158 def extract_kwoptargs @args.kwoptargs.each do |arg| @initialization << arg.updated(:extract_kwoptarg) end end
extract_kwrestarg()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 164 def extract_kwrestarg if (arg = @args.kwrestarg) @initialization << arg.updated(:extract_kwrestarg) end end
extract_optargs()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 178 def extract_optargs has_post_args = @args.has_post_args? @args.optargs.each do |arg| if has_post_args # optional post argument like 'def m(opt = 1, a)' arg_name, default_value = *arg @initialization << arg.updated(:extract_post_optarg, [arg_name, default_value, args_to_keep]) @inline << s(:fake_arg) else # optional inline argument like 'def m(a, opt = 1)' @inline << arg.updated(:arg) @initialization << arg.updated(:extract_optarg) end end end
extract_post_args()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 170 def extract_post_args # post arguments must be extracted with an offset @args.postargs.each do |arg| @initialization << arg.updated(:extract_post_arg) @inline << s(:fake_arg) end end
extract_restarg()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 194 def extract_restarg 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()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 112 def initialize_shadowargs @args.shadowargs.each do |arg| @initialization << arg.updated(:initialize_shadowarg) end end
prepare_kwargs()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 139 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()
click to toggle source
# File lib/opal/rewriters/inline_args.rb, line 133 def prepare_post_args if @args.has_post_args? @initialization << s(:prepare_post_args, @args.args.length) end end