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