Sha256: 7d8d243cb56d8570899402159b9c26317f0aa25f97fbdbe3d1c93e200b04650f
Contents?: true
Size: 1.03 KB
Versions: 7
Compression:
Stored size: 1.03 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, arglist) recvr == s(:const, nil, :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.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