Sha256: 1fb3f7119fa8fcf230e98e5599afd9a7cdf9bf559704892d74cbd4cde3d07feb

Contents?: true

Size: 870 Bytes

Versions: 6

Compression:

Stored size: 870 Bytes

Contents

# 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

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
opal-1.8.3.rc1 lib/opal/nodes/args/extract_kwoptarg.rb
opal-1.8.2 lib/opal/nodes/args/extract_kwoptarg.rb
opal-1.8.1 lib/opal/nodes/args/extract_kwoptarg.rb
opal-1.8.0 lib/opal/nodes/args/extract_kwoptarg.rb
opal-1.8.0.beta1 lib/opal/nodes/args/extract_kwoptarg.rb
opal-1.8.0.alpha1 lib/opal/nodes/args/extract_kwoptarg.rb