execjs 1.2.4 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -91,6 +91,7 @@ module ExecJS
91
91
  @runner_path = options[:runner_path]
92
92
  @test_args = options[:test_args]
93
93
  @test_match = options[:test_match]
94
+ @encoding = options[:encoding]
94
95
  @binary = locate_binary
95
96
  end
96
97
 
@@ -119,8 +120,7 @@ module ExecJS
119
120
  end
120
121
 
121
122
  def exec_runtime(filename)
122
- output = nil
123
- IO.popen("#{@binary} #{filename} 2>&1") { |f| output = f.read }
123
+ output = sh("#{@binary} #{filename} 2>&1")
124
124
  if $?.success?
125
125
  output
126
126
  else
@@ -143,7 +143,7 @@ module ExecJS
143
143
  Array(command).each do |name|
144
144
  name, args = name.split(/\s+/, 2)
145
145
  result = if ExecJS.windows?
146
- `#{ExecJS.root}/support/which.bat #{name}`
146
+ `"#{ExecJS.root}/support/which.bat" #{name}`
147
147
  else
148
148
  `command -v #{name} 2>/dev/null`
149
149
  end
@@ -154,5 +154,28 @@ module ExecJS
154
154
  end
155
155
  nil
156
156
  end
157
+
158
+ if "".respond_to?(:force_encoding)
159
+ def sh(command)
160
+ output, options = nil, {}
161
+ options[:external_encoding] = @encoding if @encoding
162
+ options[:internal_encoding] = Encoding.default_internal || 'UTF-8'
163
+ IO.popen(command, options) { |f| output = f.read }
164
+ output
165
+ end
166
+ else
167
+ require "iconv"
168
+
169
+ def sh(command)
170
+ output = nil
171
+ IO.popen(command) { |f| output = f.read }
172
+
173
+ if @encoding
174
+ Iconv.new('UTF-8', @encoding).iconv(output)
175
+ else
176
+ output
177
+ end
178
+ end
179
+ end
157
180
  end
158
181
  end
@@ -35,8 +35,9 @@ module ExecJS
35
35
 
36
36
  JScript = ExternalRuntime.new(
37
37
  :name => "JScript",
38
- :command => "cscript //E:jscript //Nologo",
39
- :runner_path => ExecJS.root + "/support/jscript_runner.js"
38
+ :command => "cscript //E:jscript //Nologo //U",
39
+ :runner_path => ExecJS.root + "/support/jscript_runner.js",
40
+ :encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE
40
41
  )
41
42
 
42
43
 
@@ -1,4 +1,4 @@
1
- (function(program, execJS, module, exports, require) { execJS(program) })(function() { #{source}
1
+ (function(program, execJS) { execJS(program) })(function(module, exports, require) { #{source}
2
2
  }, function(program) {
3
3
  var output, print = function(string) {
4
4
  process.stdout.write('' + string);
@@ -1,3 +1,3 @@
1
1
  module ExecJS
2
- VERSION = "1.2.4"
2
+ VERSION = "1.2.5"
3
3
  end
metadata CHANGED
@@ -1,98 +1,125 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: execjs
3
- version: !ruby/object:Gem::Version
4
- version: 1.2.4
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
5
  prerelease:
6
+ segments:
7
+ - 1
8
+ - 2
9
+ - 5
10
+ version: 1.2.5
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Sam Stephenson
9
14
  - Josh Peek
10
15
  autorequire:
11
16
  bindir: bin
12
17
  cert_chain: []
13
- date: 2011-08-03 00:00:00.000000000Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2011-09-12 00:00:00 -05:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
16
23
  name: multi_json
17
- requirement: &70192476050340 !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
18
26
  none: false
19
- requirements:
27
+ requirements:
20
28
  - - ~>
21
- - !ruby/object:Gem::Version
22
- version: '1.0'
29
+ - !ruby/object:Gem::Version
30
+ hash: 15
31
+ segments:
32
+ - 1
33
+ - 0
34
+ version: "1.0"
23
35
  type: :runtime
24
- prerelease: false
25
- version_requirements: *70192476050340
26
- - !ruby/object:Gem::Dependency
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
27
38
  name: johnson
28
- requirement: &70192476049920 !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
29
41
  none: false
30
- requirements:
31
- - - ! '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
34
49
  type: :development
35
- prerelease: false
36
- version_requirements: *70192476049920
37
- - !ruby/object:Gem::Dependency
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
38
52
  name: mustang
39
- requirement: &70192476049460 !ruby/object:Gem::Requirement
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
40
55
  none: false
41
- requirements:
42
- - - ! '>='
43
- - !ruby/object:Gem::Version
44
- version: '0'
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
45
63
  type: :development
46
- prerelease: false
47
- version_requirements: *70192476049460
48
- - !ruby/object:Gem::Dependency
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
49
66
  name: rake
50
- requirement: &70192476078460 !ruby/object:Gem::Requirement
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
51
69
  none: false
52
- requirements:
53
- - - ! '>='
54
- - !ruby/object:Gem::Version
55
- version: '0'
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
56
77
  type: :development
57
- prerelease: false
58
- version_requirements: *70192476078460
59
- - !ruby/object:Gem::Dependency
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
60
80
  name: therubyracer
61
- requirement: &70192476078040 !ruby/object:Gem::Requirement
81
+ prerelease: false
82
+ requirement: &id005 !ruby/object:Gem::Requirement
62
83
  none: false
63
- requirements:
64
- - - ! '>='
65
- - !ruby/object:Gem::Version
66
- version: '0'
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
67
91
  type: :development
68
- prerelease: false
69
- version_requirements: *70192476078040
70
- - !ruby/object:Gem::Dependency
92
+ version_requirements: *id005
93
+ - !ruby/object:Gem::Dependency
71
94
  name: therubyrhino
72
- requirement: &70192476077620 !ruby/object:Gem::Requirement
95
+ prerelease: false
96
+ requirement: &id006 !ruby/object:Gem::Requirement
73
97
  none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
78
105
  type: :development
79
- prerelease: false
80
- version_requirements: *70192476077620
81
- description: ! ' ExecJS lets you run JavaScript code from Ruby.
82
-
83
- '
84
- email:
106
+ version_requirements: *id006
107
+ description: " ExecJS lets you run JavaScript code from Ruby.\n"
108
+ email:
85
109
  - sstephenson@gmail.com
86
110
  - josh@joshpeek.com
87
111
  executables: []
112
+
88
113
  extensions: []
114
+
89
115
  extra_rdoc_files: []
90
- files:
91
- - lib/execjs.rb
116
+
117
+ files:
118
+ - README.md
119
+ - LICENSE
92
120
  - lib/execjs/external_runtime.rb
93
121
  - lib/execjs/johnson_runtime.rb
94
122
  - lib/execjs/module.rb
95
- - lib/execjs/version.rb
96
123
  - lib/execjs/mustang_runtime.rb
97
124
  - lib/execjs/ruby_racer_runtime.rb
98
125
  - lib/execjs/ruby_rhino_runtime.rb
@@ -103,30 +130,41 @@ files:
103
130
  - lib/execjs/support/json2.js
104
131
  - lib/execjs/support/node_runner.js
105
132
  - lib/execjs/support/which.bat
106
- - LICENSE
107
- - README.md
133
+ - lib/execjs/version.rb
134
+ - lib/execjs.rb
135
+ has_rdoc: true
108
136
  homepage: https://github.com/sstephenson/execjs
109
137
  licenses: []
138
+
110
139
  post_install_message:
111
140
  rdoc_options: []
112
- require_paths:
141
+
142
+ require_paths:
113
143
  - lib
114
- required_ruby_version: !ruby/object:Gem::Requirement
144
+ required_ruby_version: !ruby/object:Gem::Requirement
115
145
  none: false
116
- requirements:
117
- - - ! '>='
118
- - !ruby/object:Gem::Version
119
- version: '0'
120
- required_rubygems_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ hash: 3
150
+ segments:
151
+ - 0
152
+ version: "0"
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
154
  none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ hash: 3
159
+ segments:
160
+ - 0
161
+ version: "0"
126
162
  requirements: []
163
+
127
164
  rubyforge_project:
128
- rubygems_version: 1.8.6
165
+ rubygems_version: 1.5.2
129
166
  signing_key:
130
167
  specification_version: 3
131
168
  summary: Run JavaScript code from Ruby
132
169
  test_files: []
170
+