lib/opal/nodes/args/extract_kwoptarg.rb
# frozen_string_literal: true require 'opal/nodes/base' module Opal module Nodes module Args # This node is responsible for extracting a single # optional keyword argument from $kwargs # # $kwargs always exist (as argument when inlining is possible # and as a local variable when it's not) # class ExtractKwoptarg < Base handle :extract_kwoptarg children :lvar_name, :default_value def compile helper :hash_get key_name = @sexp.meta[:arg_name] scope.used_kwargs << key_name add_temp lvar_name line "#{lvar_name} = $hash_get($kwargs, #{key_name.to_s.inspect});" return if default_value.children[1] == :undefined push "if (#{lvar_name} == null) #{lvar_name} = ", expr(default_value) end end end end end