Module: NodeModule
- Defined in:
- lib/node_module.rb,
lib/node_module/version.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- VERSION =
"0.1.3"
Class Method Summary collapse
- .call_javascript_function(name, args = []) ⇒ Object
- .convert_method_to_javascript(fn) ⇒ Object
- .execute_following_methods_as_javascript!(receiver) ⇒ Object
- .execute_methods_as_javascript!(methods, receiver) ⇒ Object
- .included(base) ⇒ Object
- .js_context ⇒ Object
Class Method Details
.call_javascript_function(name, args = []) ⇒ Object
24 25 26 |
# File 'lib/node_module.rb', line 24 def self.call_javascript_function(name, args = []) NodeModule.js_context.eval "Opal.Object['$#{name}'].apply(this, #{args.to_json})" end |
.convert_method_to_javascript(fn) ⇒ Object
20 21 22 |
# File 'lib/node_module.rb', line 20 def self.convert_method_to_javascript(fn) NodeModule.js_context.eval Opal.parse(fn) end |
.execute_following_methods_as_javascript!(receiver) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/node_module.rb', line 51 def self.execute_following_methods_as_javascript!(receiver) active = nil receiver.define_singleton_method(:method_added) do |meth_name| return if active active = true receiver.node_module(meth_name) active = false end end |
.execute_methods_as_javascript!(methods, receiver) ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/node_module.rb', line 40 def self.execute_methods_as_javascript!(methods, receiver) methods.each do |name| meth = receiver.instance_method(name).to_ruby NodeModule.convert_method_to_javascript(meth) receiver.send :define_method, name do |*args| NodeModule.call_javascript_function(__method__, args) end end end |
.included(base) ⇒ Object
10 11 12 |
# File 'lib/node_module.rb', line 10 def self.included(base) base.extend ClassMethods end |
.js_context ⇒ Object
14 15 16 17 18 |
# File 'lib/node_module.rb', line 14 def self.js_context @ctx ||= V8::Context.new do |ctx| ctx.eval Opal::Builder.build('opal') end end |