Sha256: 81a4740ae1deb2e2068c026bd4d0bb83604a249cea97d657aae866e008348853
Contents?: true
Size: 1.02 KB
Versions: 7
Compression:
Stored size: 1.02 KB
Contents
# frozen_string_literal: true require 'set' require 'opal/nodes/base' module Opal module Nodes class RuntimeHelpers < Base HELPERS = Set.new children :recvr, :meth, :arglist def self.s(type, *children) ::Opal::AST::Node.new(type, children) end def self.compatible?(recvr, meth) recvr == s(:const, nil, :Opal) && 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.children[0] raise 'truthy? requires an object' end js_truthy(sexp) end helper :falsy? do unless sexp = arglist.children[0] raise 'falsy? requires an object' end js_falsy(sexp) end end end end
Version data entries
7 entries across 7 versions & 1 rubygems