Sha256: fdcbc6dbf0c8a0701e14044497db43991f2fe77b25a06499f99f6ed757c23ee5

Contents?: true

Size: 508 Bytes

Versions: 7

Compression:

Stored size: 508 Bytes

Contents

require 'opal/nodes/scope'

module Opal
  module Nodes
    class SingletonClassNode < ScopeNode
      handle :sclass

      children :object, :body

      def compile
        push "(function(self) {"

        in_scope do
          add_temp '$scope = self.$$scope'
          add_temp 'def = self.$$proto'

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

        line "})(", recv(object), ".$singleton_class())"
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
opal-0.8.1 lib/opal/nodes/singleton_class.rb
opal-0.8.1.rc1 lib/opal/nodes/singleton_class.rb
opal-wedge-0.9.0.dev lib/opal/nodes/singleton_class.rb
opal-0.8.0 lib/opal/nodes/singleton_class.rb
opal-0.8.0.rc3 lib/opal/nodes/singleton_class.rb
opal-0.8.0.rc2 lib/opal/nodes/singleton_class.rb
opal-0.8.0.rc1 lib/opal/nodes/singleton_class.rb