commonjs 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,16 +6,16 @@ module CommonJS
6
6
 
7
7
  def initialize(runtime, options = {})
8
8
  @runtime = runtime
9
- @path = Pathname(options[:path])
9
+ @paths = [options[:path]].flatten.map {|path| Pathname(path)}
10
10
  @modules = {}
11
11
  end
12
12
 
13
13
  def require(module_id)
14
14
  unless mod = @modules[module_id]
15
15
  filepath = find(module_id) or fail LoadError, "no such module '#{module_id}'"
16
- load = @runtime.eval("(function(require, exports) {#{File.read(filepath)}})", filepath.expand_path)
16
+ load = @runtime.eval("(function(module, require, exports) {#{File.read(filepath)}})", filepath.expand_path)
17
17
  @modules[module_id] = mod = Module.new(module_id, self)
18
- load.call(mod.require_function, mod.exports)
18
+ load.call(mod, mod.require_function, mod.exports)
19
19
  end
20
20
  return mod.exports
21
21
  end
@@ -31,9 +31,7 @@ module CommonJS
31
31
  private
32
32
 
33
33
  def find(module_id)
34
- filepath = @path.join("#{module_id}.js")
35
- filepath if filepath.exist?
34
+ @paths.find { |path| path.join("#{module_id}.js").exist? }.join("#{module_id}.js")
36
35
  end
37
-
38
36
  end
39
37
  end
@@ -2,7 +2,8 @@
2
2
  module CommonJS
3
3
  class Module
4
4
 
5
- attr_reader :exports
5
+ attr_reader :id
6
+ attr_accessor :exports
6
7
 
7
8
  def initialize(id, env)
8
9
  @id = id
@@ -1,3 +1,3 @@
1
1
  module CommonJS
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -0,0 +1 @@
1
+ module.exports = function() {return 'I am your exports'}
@@ -0,0 +1 @@
1
+ exports.one = 'one'
@@ -0,0 +1 @@
1
+ exports.three = 'three'
@@ -0,0 +1 @@
1
+ exports.one = 1
@@ -0,0 +1 @@
1
+ exports.two = 2
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'modules extensions' do
4
+ before do
5
+ @env = CommonJS::Environment.new(V8::Context.new, :path => File.expand_path('../libjs', __FILE__))
6
+ end
7
+ it "allows the exports object to be completely replaced" do
8
+ @env.require('assign_module_exports').call().should eql "I am your exports"
9
+ end
10
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe "load paths: " do
4
+ describe "with a single path" do
5
+ before do
6
+ @env = env_with_path_value File.expand_path('../libjs', __FILE__)
7
+ end
8
+
9
+ it "finds modules in that path" do
10
+ @env.require('one').one.should eql 'one'
11
+ end
12
+ end
13
+
14
+ describe "with multilpe paths" do
15
+ before do
16
+ @env = env_with_path_value [File.expand_path('../libjs2', __FILE__), File.expand_path('../libjs', __FILE__)]
17
+ end
18
+
19
+ it "finds modules in both paths" do
20
+ @env.require('two').two.should eql 2
21
+ @env.require('three').three.should eql 'three'
22
+ end
23
+
24
+ it "respects the order in which paths were specified" do
25
+ @env.require('one').one.should eql 1
26
+ end
27
+ end
28
+
29
+ def env_with_path_value(path)
30
+ CommonJS::Environment.new V8::Context.new, :path => path
31
+ end
32
+ end
33
+
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
1
 
2
2
  require 'commonjs'
3
- require 'pathname'
3
+ require 'pathname'
4
+ require 'v8'
metadata CHANGED
@@ -1,76 +1,56 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: commonjs
3
- version: !ruby/object:Gem::Version
4
- hash: 23
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 2
9
- - 0
10
- version: 0.2.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Charles Lowell
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-11-29 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-03-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: therubyracer
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2156255820 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 41
29
- segments:
30
- - 0
31
- - 9
32
- - 9
20
+ - !ruby/object:Gem::Version
33
21
  version: 0.9.9
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: rake
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2156255820
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &2156255280 !ruby/object:Gem::Requirement
40
28
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
48
33
  type: :development
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: rspec
52
34
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2156255280
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &2156254640 !ruby/object:Gem::Requirement
54
39
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
62
44
  type: :development
63
- version_requirements: *id003
45
+ prerelease: false
46
+ version_requirements: *2156254640
64
47
  description: Host CommonJS JavaScript environments in Ruby
65
- email:
48
+ email:
66
49
  - cowboyd@thefrontside.net
67
50
  executables: []
68
-
69
51
  extensions: []
70
-
71
52
  extra_rdoc_files: []
72
-
73
- files:
53
+ files:
74
54
  - .gitignore
75
55
  - .gitmodules
76
56
  - Gemfile
@@ -81,41 +61,47 @@ files:
81
61
  - lib/commonjs/environment.rb
82
62
  - lib/commonjs/module.rb
83
63
  - lib/commonjs/version.rb
64
+ - spec/commonjs/libjs/assign_module_exports.js
65
+ - spec/commonjs/libjs/one.js
66
+ - spec/commonjs/libjs/three.js
67
+ - spec/commonjs/libjs2/one.js
68
+ - spec/commonjs/libjs2/two.js
69
+ - spec/commonjs/modules_extensions_spec.rb
84
70
  - spec/commonjs/modules_spec.rb
71
+ - spec/commonjs/path_spec.rb
85
72
  - spec/spec_helper.rb
86
73
  homepage: http://github.com/cowboyd/commonjs
87
74
  licenses: []
88
-
89
75
  post_install_message:
90
76
  rdoc_options: []
91
-
92
- require_paths:
77
+ require_paths:
93
78
  - lib
94
- required_ruby_version: !ruby/object:Gem::Requirement
79
+ required_ruby_version: !ruby/object:Gem::Requirement
95
80
  none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
103
- required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
104
86
  none: false
105
- requirements:
106
- - - ">="
107
- - !ruby/object:Gem::Version
108
- hash: 3
109
- segments:
110
- - 0
111
- version: "0"
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
112
91
  requirements: []
113
-
114
92
  rubyforge_project:
115
- rubygems_version: 1.8.10
93
+ rubygems_version: 1.8.17
116
94
  signing_key:
117
95
  specification_version: 3
118
- summary: Provide access to your Ruby and Operating System runtime via the commonjs API
119
- test_files:
96
+ summary: Provide access to your Ruby and Operating System runtime via the commonjs
97
+ API
98
+ test_files:
99
+ - spec/commonjs/libjs/assign_module_exports.js
100
+ - spec/commonjs/libjs/one.js
101
+ - spec/commonjs/libjs/three.js
102
+ - spec/commonjs/libjs2/one.js
103
+ - spec/commonjs/libjs2/two.js
104
+ - spec/commonjs/modules_extensions_spec.rb
120
105
  - spec/commonjs/modules_spec.rb
106
+ - spec/commonjs/path_spec.rb
121
107
  - spec/spec_helper.rb