lib/opal/nodes/args/kwoptarg.rb



require 'opal/nodes/args/initialize_kwargs'

module Opal
  module Nodes
    # A node responsible for extracting a
    # single *optional* keyword argument
    #
    # def m(kw: 1)
    #
    class KwoptArgNode < InitializeKwargsNode
      handle :kwoptarg

      def compile
        initialize_kw_args_if_needed

        kwoptarg_name = @sexp[1].to_sym
        default_value = @sexp[2]
        var_name = variable(kwoptarg_name)
        add_temp var_name

        line "if ((#{var_name} = $kwargs.$$smap['#{kwoptarg_name}']) == null) {"
        line "  #{var_name} = ", expr(default_value)
        line "}"

        scope.used_kwargs << kwoptarg_name
      end
    end
  end
end