module Jot::Ruby::Js::Impl::ImplHelpers
Private Instance Methods
escape(str)
click to toggle source
# File lib/jot/ruby/js/impl.rb, line 67 def escape(str) ::JSON.generate(str, quirks_mode: true, max_nesting: false) end
js_eval(str = nil) { || ... }
click to toggle source
# File lib/jot/ruby/js/impl.rb, line 20 def js_eval(str = nil) if block_given? val = yield Impl.runtime.eval(val) elsif str Impl.runtime.eval(str) end rescue ExecJS::ProgramError => e raise Errors::ImplError, e.message end
js_jot_method(method_name, *args)
click to toggle source
# File lib/jot/ruby/js/impl.rb, line 39 def js_jot_method(method_name, *args) "jot.#{js_method(method_name, *args)}" end
js_method(method_name, *args)
click to toggle source
# File lib/jot/ruby/js/impl.rb, line 31 def js_method(method_name, *args) "#{method_name}(#{transform_args(*args)})" end
js_operation_method(op, method_name, *args)
click to toggle source
# File lib/jot/ruby/js/impl.rb, line 35 def js_operation_method(op, method_name, *args) "#{raw_op(op)}.#{js_method(method_name, *args)}" end
new_serialized_jot_eval(method_name, *args)
click to toggle source
# File lib/jot/ruby/js/impl.rb, line 59 def new_serialized_jot_eval(method_name, *args) js_eval do serialize_op do ['new', js_jot_method(method_name, *args)].join(' ') end end end
raw_op(op)
click to toggle source
# File lib/jot/ruby/js/impl.rb, line 43 def raw_op(op) "jot.deserialize(#{escape(op.serialized)})" end
serialize_op()
click to toggle source
# File lib/jot/ruby/js/impl.rb, line 47 def serialize_op "(#{yield}).serialize()" end
serialized_jot_eval(method_name, *args)
click to toggle source
# File lib/jot/ruby/js/impl.rb, line 51 def serialized_jot_eval(method_name, *args) js_eval do serialize_op do js_jot_method(method_name, *args) end end end
transform_args(*args)
click to toggle source
# File lib/jot/ruby/js/impl.rb, line 71 def transform_args(*args) args.map! do |arg| case arg when Hash MultiJson.dump(arg) when Operation raw_op(arg) when Numeric arg when Array "[#{arg.flat_map { |i| transform_args(i) }.join(', ')}]" else escape(arg) end end args.join(', ') end