Sha256: 35e1f5ea5183379007dbaf98758bf7971fe8ece8f049b23031673810fb350c29

Contents?: true

Size: 592 Bytes

Versions: 7

Compression:

Stored size: 592 Bytes

Contents

# frozen_string_literal: true
require 'opal/nodes/scope'

module Opal
  module Nodes
    class SingletonClassNode < ScopeNode
      handle :sclass

      children :object, :body

      def compile
        push "(function(self, $parent_nesting) {"

        in_scope do
          add_temp 'def = self.$$proto'
          add_temp '$nesting = [self].concat($parent_nesting)'

          body_stmt = stmt(compiler.returns(body))
          line scope.to_vars
          line body_stmt
        end

        line "})(Opal.get_singleton_class(", recv(object), "), $nesting)"
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
opal-0.11.4 lib/opal/nodes/singleton_class.rb
opal-0.11.3 lib/opal/nodes/singleton_class.rb
opal-0.11.2 lib/opal/nodes/singleton_class.rb
opal-0.11.1 lib/opal/nodes/singleton_class.rb
opal-0.11.1.pre lib/opal/nodes/singleton_class.rb
opal-0.11.0 lib/opal/nodes/singleton_class.rb
opal-0.11.0.rc1 lib/opal/nodes/singleton_class.rb