Sha256: f1a1bf4f244240da0950eb763d8e39d49d112c5f3baeab021e0a6286c29137fa

Contents?: true

Size: 606 Bytes

Versions: 2

Compression:

Stored size: 606 Bytes

Contents

# frozen_string_literal: true

require 'opal/nodes/module'

module Opal
  module Nodes
    class ClassNode < ModuleNode
      handle :class

      children :cid, :sup, :body

      def compile
        name, base = name_and_base
        helper :klass

        push '(function($base, $super, $parent_nesting) {'
        line "  var self = $klass($base, $super, '#{name}');"
        in_scope do
          scope.name = name
          compile_body
        end
        line '})(', base, ', ', super_code, ', $nesting)'
      end

      def super_code
        sup ? expr(sup) : 'null'
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
opal-1.2.0 lib/opal/nodes/class.rb
opal-1.2.0.beta1 lib/opal/nodes/class.rb