Sha256: c837e133847b3d60a0ba0b0da71a699e896eda35e3acf1cf3546d2cf1f836149

Contents?: true

Size: 909 Bytes

Versions: 45

Compression:

Stored size: 909 Bytes

Contents

require 'set'
require 'opal/nodes/base'

module Opal
  module Nodes
    class RuntimeHelpers < Base
      HELPERS = Set.new

      children :recvr, :meth, :arglist

      def self.compatible?(recvr, meth, arglist)
        recvr == [:const, :Opal] and HELPERS.include?(meth.to_sym)
      end

      def self.helper(name, &block)
        HELPERS << name
        define_method("compile_#{name}", &block)
      end

      def compile
        if HELPERS.include?(meth.to_sym)
          __send__("compile_#{meth}")
        else
          raise "Helper not supported: #{meth}"
        end
      end

      helper :truthy? do
        unless sexp = arglist[1]
          raise "truthy? requires an object"
        end

        js_truthy(sexp)
      end

      helper :falsy? do
        unless sexp = arglist[1]
          raise "falsy? requires an object"
        end

        js_falsy(sexp)
      end
    end
  end
end

Version data entries

45 entries across 45 versions & 3 rubygems

Version Path
opal-0.10.6 lib/opal/nodes/runtime_helpers.rb
opal-0.10.6.beta lib/opal/nodes/runtime_helpers.rb
opal-0.10.5 lib/opal/nodes/runtime_helpers.rb
opal-0.10.4 lib/opal/nodes/runtime_helpers.rb
opal-0.10.3 lib/opal/nodes/runtime_helpers.rb
opal-0.10.2 lib/opal/nodes/runtime_helpers.rb
opal-0.10.1 lib/opal/nodes/runtime_helpers.rb
opal-0.10.0 lib/opal/nodes/runtime_helpers.rb
opal-0.10.0.rc2 lib/opal/nodes/runtime_helpers.rb
opal-0.9.4 lib/opal/nodes/runtime_helpers.rb
opal-0.9.3 lib/opal/nodes/runtime_helpers.rb
opal-0.10.0.rc1 lib/opal/nodes/runtime_helpers.rb
opal-0.10.0.beta5 lib/opal/nodes/runtime_helpers.rb
opal-0.10.0.beta4 lib/opal/nodes/runtime_helpers.rb
opal-0.10.0.beta3 lib/opal/nodes/runtime_helpers.rb
opal-0.10.0.beta2 lib/opal/nodes/runtime_helpers.rb
opal-0.10.0.beta1 lib/opal/nodes/runtime_helpers.rb
opal-0.9.2 lib/opal/nodes/runtime_helpers.rb
opal-0.9.0 lib/opal/nodes/runtime_helpers.rb
opal-0.9.0.rc1 lib/opal/nodes/runtime_helpers.rb