Sha256: 6ce0045033a5f47fe06a580f6c190e2d8bf42f22bc111a758fadf96a3bb89a72

Contents?: true

Size: 857 Bytes

Versions: 24

Compression:

Stored size: 857 Bytes

Contents

# frozen_string_literal: true

require 'opal/nodes/base'

module Opal
  module Nodes
    module Args
      # This node is responsible for extracting a single
      # required keyword argument from $kwargs
      #
      # $kwargs always exist (as argument when inlining is possible
      # and as a local variable when it's not)
      #
      class ExtractKwarg < Base
        handle :extract_kwarg
        children :lvar_name

        def compile
          key_name = @sexp.meta[:arg_name]
          scope.used_kwargs << key_name

          add_temp lvar_name

          line "if (!Opal.hasOwnProperty.call($kwargs.$$smap, '#{key_name}')) {"
          line "  throw Opal.ArgumentError.$new('missing keyword: #{key_name}');"
          line '}'
          line "#{lvar_name} = $kwargs.$$smap[#{key_name.to_s.inspect}];"
        end
      end
    end
  end
end

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
opal-1.5.1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.5.0 lib/opal/nodes/args/extract_kwarg.rb
opal-1.5.0.rc1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.4.1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.4.0 lib/opal/nodes/args/extract_kwarg.rb
opal-1.4.0.alpha1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.3.2 lib/opal/nodes/args/extract_kwarg.rb
opal-1.3.1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.3.0 lib/opal/nodes/args/extract_kwarg.rb
opal-1.3.0.rc1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.3.0.alpha1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.2.0 lib/opal/nodes/args/extract_kwarg.rb
opal-1.2.0.beta1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.1.1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.1.1.rc1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.1.0 lib/opal/nodes/args/extract_kwarg.rb
opal-1.1.0.rc1 lib/opal/nodes/args/extract_kwarg.rb
opal-1.0.5 lib/opal/nodes/args/extract_kwarg.rb
opal-1.0.4 lib/opal/nodes/args/extract_kwarg.rb
opal-1.0.3 lib/opal/nodes/args/extract_kwarg.rb