Class: Bluenode::NativeModule
- Inherits:
-
Object
- Object
- Bluenode::NativeModule
- Defined in:
- lib/bluenode/native_module.rb
Constant Summary collapse
- FILES =
Dir[File.(File.join('..', 'shims', '*.js'), __FILE__)].freeze
- SOURCES =
FILES.inject({}) do |memo, filename| id = File.basename(filename, '.js') fn = lambda { File.read(filename )} memo.merge! id => fn end.freeze
- NAMES =
SOURCES.keys.freeze
Instance Attribute Summary collapse
-
#exports ⇒ Object
Returns the value of attribute exports.
-
#filename ⇒ Object
Returns the value of attribute filename.
-
#id ⇒ Object
Returns the value of attribute id.
-
#loaded ⇒ Object
Returns the value of attribute loaded.
Class Method Summary collapse
Instance Method Summary collapse
- #cache ⇒ Object
- #compile ⇒ Object
-
#initialize(context, id) ⇒ NativeModule
constructor
A new instance of NativeModule.
Constructor Details
#initialize(context, id) ⇒ NativeModule
Returns a new instance of NativeModule.
49 50 51 52 53 54 55 |
# File 'lib/bluenode/native_module.rb', line 49 def initialize(context, id) @context = context @filename = id + '.js' @id = id @exports = context.new_object @loaded = false end |
Instance Attribute Details
#exports ⇒ Object
Returns the value of attribute exports.
47 48 49 |
# File 'lib/bluenode/native_module.rb', line 47 def exports @exports end |
#filename ⇒ Object
Returns the value of attribute filename.
47 48 49 |
# File 'lib/bluenode/native_module.rb', line 47 def filename @filename end |
#id ⇒ Object
Returns the value of attribute id.
47 48 49 |
# File 'lib/bluenode/native_module.rb', line 47 def id @id end |
#loaded ⇒ Object
Returns the value of attribute loaded.
47 48 49 |
# File 'lib/bluenode/native_module.rb', line 47 def loaded @loaded end |
Class Method Details
.cache ⇒ Object
36 37 38 |
# File 'lib/bluenode/native_module.rb', line 36 def cache @cache ||= {} end |
.exist?(id) ⇒ Boolean
32 33 34 |
# File 'lib/bluenode/native_module.rb', line 32 def exist?(id) SOURCES.key?(id) end |
.require(context, id) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/bluenode/native_module.rb', line 15 def require(context, id) return self if id == 'native_module' cached = cache[id] return cached.exports if cached raise LoadError, "no such native module #{id}" unless exist?(id) # process.moduleLoadList.push('NativeModule ' + id) native_module = new(context, id) native_module.compile native_module.cache native_module.exports end |
.sources ⇒ Object
40 41 42 43 44 |
# File 'lib/bluenode/native_module.rb', line 40 def sources @sources ||= Hash.new do |hash, id| hash[id] = SOURCES[id].call end end |
Instance Method Details
#cache ⇒ Object
66 67 68 |
# File 'lib/bluenode/native_module.rb', line 66 def cache self.class.cache[id] = self end |