execjs 1.0.0 → 1.1.0

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.
@@ -1,53 +1,6 @@
1
- require "rbconfig"
1
+ require "execjs/module"
2
+ require "execjs/runtimes"
2
3
 
3
4
  module ExecJS
4
- VERSION = "1.0.0"
5
-
6
- class Error < ::StandardError; end
7
- class RuntimeError < Error; end
8
- class ProgramError < Error; end
9
- class RuntimeUnavailable < RuntimeError; end
10
-
11
- autoload :ExternalRuntime, "execjs/external_runtime"
12
- autoload :MustangRuntime, "execjs/mustang_runtime"
13
- autoload :RubyRacerRuntime, "execjs/ruby_racer_runtime"
14
- autoload :RubyRhinoRuntime, "execjs/ruby_rhino_runtime"
15
- autoload :Runtimes, "execjs/runtimes"
16
-
17
- class << self
18
- attr_reader :runtime
19
-
20
- def exec(source)
21
- runtime.exec(source)
22
- end
23
-
24
- def eval(source)
25
- runtime.eval(source)
26
- end
27
-
28
- def compile(source)
29
- runtime.compile(source)
30
- end
31
-
32
- def runtimes
33
- Runtimes.runtimes
34
- end
35
-
36
- def runtime=(runtime)
37
- raise RuntimeUnavailable, "#{runtime.name} is unavailable on this system" unless runtime.available?
38
- @runtime = runtime
39
- end
40
-
41
- def root
42
- @root ||= File.expand_path("../execjs", __FILE__)
43
- end
44
-
45
- def windows?
46
- @windows ||= RbConfig::CONFIG["host_os"] =~ /mswin|mingw/
47
- end
48
- end
49
-
50
- # Eagerly detect runtime
51
- self.runtime ||= Runtimes.best_available ||
52
- raise(RuntimeUnavailable, "Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.")
5
+ self.runtime ||= Runtimes.autodetect
53
6
  end
@@ -0,0 +1,39 @@
1
+ require "rbconfig"
2
+
3
+ module ExecJS
4
+ VERSION = "1.1.0"
5
+
6
+ class Error < ::StandardError; end
7
+ class RuntimeError < Error; end
8
+ class ProgramError < Error; end
9
+ class RuntimeUnavailable < RuntimeError; end
10
+
11
+ class << self
12
+ attr_reader :runtime
13
+
14
+ def runtime=(runtime)
15
+ raise RuntimeUnavailable, "#{runtime.name} is unavailable on this system" unless runtime.available?
16
+ @runtime = runtime
17
+ end
18
+
19
+ def exec(source)
20
+ runtime.exec(source)
21
+ end
22
+
23
+ def eval(source)
24
+ runtime.eval(source)
25
+ end
26
+
27
+ def compile(source)
28
+ runtime.compile(source)
29
+ end
30
+
31
+ def root
32
+ @root ||= File.expand_path("..", __FILE__)
33
+ end
34
+
35
+ def windows?
36
+ @windows ||= RbConfig::CONFIG["host_os"] =~ /mswin|mingw/
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,9 @@
1
+ require "execjs/module"
2
+ require "execjs/external_runtime"
3
+ require "execjs/mustang_runtime"
4
+ require "execjs/ruby_racer_runtime"
5
+ require "execjs/ruby_rhino_runtime"
6
+
1
7
  module ExecJS
2
8
  module Runtimes
3
9
  RubyRacer = RubyRacerRuntime.new
@@ -32,10 +38,34 @@ module ExecJS
32
38
  )
33
39
 
34
40
 
41
+ def self.autodetect
42
+ from_environment || best_available ||
43
+ raise(RuntimeUnavailable, "Could not find a JavaScript runtime. " +
44
+ "See https://github.com/sstephenson/execjs for a list of available runtimes.")
45
+ end
46
+
35
47
  def self.best_available
36
48
  runtimes.find(&:available?)
37
49
  end
38
50
 
51
+ def self.from_environment
52
+ if name = ENV["EXECJS_RUNTIME"]
53
+ if runtime = const_get(name)
54
+ if runtime.available?
55
+ runtime if runtime.available?
56
+ else
57
+ raise RuntimeUnavailable, "#{name} runtime is not available on this system"
58
+ end
59
+ elsif !name.empty?
60
+ raise RuntimeUnavailable, "#{name} runtime is not defined"
61
+ end
62
+ end
63
+ end
64
+
65
+ def self.names
66
+ constants
67
+ end
68
+
39
69
  def self.runtimes
40
70
  @runtimes ||= [
41
71
  RubyRacer,
@@ -48,4 +78,8 @@ module ExecJS
48
78
  ]
49
79
  end
50
80
  end
81
+
82
+ def self.runtimes
83
+ Runtimes.runtimes
84
+ end
51
85
  end
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: execjs
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 19
4
5
  prerelease:
5
- version: 1.0.0
6
+ segments:
7
+ - 1
8
+ - 1
9
+ - 0
10
+ version: 1.1.0
6
11
  platform: ruby
7
12
  authors:
8
13
  - Sam Stephenson
@@ -11,7 +16,7 @@ autorequire:
11
16
  bindir: bin
12
17
  cert_chain: []
13
18
 
14
- date: 2011-05-18 00:00:00 -05:00
19
+ date: 2011-06-01 00:00:00 -05:00
15
20
  default_executable:
16
21
  dependencies:
17
22
  - !ruby/object:Gem::Dependency
@@ -22,6 +27,10 @@ dependencies:
22
27
  requirements:
23
28
  - - ~>
24
29
  - !ruby/object:Gem::Version
30
+ hash: 15
31
+ segments:
32
+ - 1
33
+ - 0
25
34
  version: "1.0"
26
35
  type: :runtime
27
36
  version_requirements: *id001
@@ -33,6 +42,9 @@ dependencies:
33
42
  requirements:
34
43
  - - ">="
35
44
  - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
36
48
  version: "0"
37
49
  type: :development
38
50
  version_requirements: *id002
@@ -44,6 +56,9 @@ dependencies:
44
56
  requirements:
45
57
  - - ">="
46
58
  - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
47
62
  version: "0"
48
63
  type: :development
49
64
  version_requirements: *id003
@@ -55,6 +70,9 @@ dependencies:
55
70
  requirements:
56
71
  - - ">="
57
72
  - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
58
76
  version: "0"
59
77
  type: :development
60
78
  version_requirements: *id004
@@ -71,6 +89,7 @@ extra_rdoc_files: []
71
89
  files:
72
90
  - lib/execjs.rb
73
91
  - lib/execjs/external_runtime.rb
92
+ - lib/execjs/module.rb
74
93
  - lib/execjs/mustang_runtime.rb
75
94
  - lib/execjs/ruby_racer_runtime.rb
76
95
  - lib/execjs/ruby_rhino_runtime.rb
@@ -96,12 +115,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
115
  requirements:
97
116
  - - ">="
98
117
  - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
99
121
  version: "0"
100
122
  required_rubygems_version: !ruby/object:Gem::Requirement
101
123
  none: false
102
124
  requirements:
103
125
  - - ">="
104
126
  - !ruby/object:Gem::Version
127
+ hash: 3
128
+ segments:
129
+ - 0
105
130
  version: "0"
106
131
  requirements: []
107
132