opal 0.3.16 → 0.3.17

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.
Files changed (251) hide show
  1. data/.gitignore +2 -0
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile +8 -7
  4. data/README.md +21 -13
  5. data/Rakefile +64 -78
  6. data/bin/opal +18 -29
  7. data/core/alpha.rb +2 -9
  8. data/core/array.rb +106 -50
  9. data/core/basic_object.rb +10 -8
  10. data/core/boolean.rb +2 -0
  11. data/core/class.rb +25 -13
  12. data/core/comparable.rb +6 -6
  13. data/core/enumerable.rb +90 -94
  14. data/core/enumerator.rb +3 -3
  15. data/core/hash.rb +86 -46
  16. data/core/kernel.rb +55 -39
  17. data/core/load_order +2 -5
  18. data/core/match_data.rb +1 -1
  19. data/core/module.rb +45 -20
  20. data/core/nil_class.rb +6 -2
  21. data/core/numeric.rb +20 -10
  22. data/core/proc.rb +2 -2
  23. data/core/range.rb +72 -13
  24. data/core/regexp.rb +5 -3
  25. data/core/runtime.js +228 -287
  26. data/core/string.rb +345 -37
  27. data/core/top_self.rb +1 -1
  28. data/lib/opal.rb +13 -91
  29. data/lib/opal/builder.rb +47 -120
  30. data/lib/opal/builder_task.rb +74 -0
  31. data/lib/opal/{parser/grammar.rb → grammar.rb} +1094 -1083
  32. data/lib/opal/{parser/grammar.y → grammar.y} +7 -0
  33. data/lib/opal/{parser/lexer.rb → lexer.rb} +32 -11
  34. data/lib/opal/{parser/parser.rb → parser.rb} +232 -238
  35. data/lib/opal/{parser/scope.rb → scope.rb} +72 -9
  36. data/lib/opal/version.rb +2 -3
  37. data/opal.gemspec +1 -2
  38. data/{core_spec → spec}/core/array/allocate_spec.rb +1 -3
  39. data/{core_spec → spec}/core/array/append_spec.rb +1 -4
  40. data/{core_spec → spec}/core/array/assoc_spec.rb +1 -4
  41. data/{core_spec → spec}/core/array/at_spec.rb +1 -3
  42. data/{core_spec → spec}/core/array/clear_spec.rb +1 -3
  43. data/spec/core/array/clone_spec.rb +15 -0
  44. data/{core_spec/core/array/shared/collect.rb → spec/core/array/collect_spec.rb} +1 -1
  45. data/{core_spec → spec}/core/array/compact_spec.rb +1 -3
  46. data/{core_spec → spec}/core/array/concat_spec.rb +1 -3
  47. data/{core_spec → spec}/core/array/constructor_spec.rb +9 -3
  48. data/{core_spec → spec}/core/array/count_spec.rb +1 -3
  49. data/{core_spec → spec}/core/array/delete_at_spec.rb +1 -4
  50. data/{core_spec → spec}/core/array/delete_if_spec.rb +1 -4
  51. data/{core_spec → spec}/core/array/delete_spec.rb +1 -4
  52. data/{core_spec → spec}/core/array/each_index_spec.rb +1 -4
  53. data/{core_spec → spec}/core/array/each_spec.rb +1 -4
  54. data/{core_spec → spec}/core/array/element_reference_spec.rb +74 -4
  55. data/{core_spec → spec}/core/array/empty_spec.rb +1 -4
  56. data/{core_spec/core/array/shared/eql.rb → spec/core/array/eql_spec.rb} +1 -1
  57. data/{core_spec → spec}/core/array/fetch_spec.rb +1 -4
  58. data/{core_spec → spec}/core/array/first_spec.rb +1 -3
  59. data/{core_spec → spec}/core/array/flatten_spec.rb +1 -3
  60. data/{core_spec → spec}/core/array/include_spec.rb +1 -3
  61. data/{core_spec → spec}/core/array/insert_spec.rb +1 -4
  62. data/{core_spec → spec}/core/array/last_spec.rb +1 -4
  63. data/{core_spec/core/array/shared/length.rb → spec/core/array/length_spec.rb} +1 -1
  64. data/spec/core/array/map_spec.rb +53 -0
  65. data/{core_spec → spec}/core/array/plus_spec.rb +1 -4
  66. data/{core_spec → spec}/core/array/pop_spec.rb +1 -4
  67. data/{core_spec → spec}/core/array/push_spec.rb +1 -4
  68. data/{core_spec → spec}/core/array/rassoc_spec.rb +1 -4
  69. data/{core_spec → spec}/core/array/reject_spec.rb +1 -4
  70. data/{core_spec/core/array/shared/replace.rb → spec/core/array/replace_spec.rb} +1 -1
  71. data/{core_spec → spec}/core/array/reverse_each_spec.rb +1 -4
  72. data/{core_spec → spec}/core/array/reverse_spec.rb +1 -4
  73. data/spec/core/array/size_spec.rb +6 -0
  74. data/spec/core/array/to_ary_spec.rb +6 -0
  75. data/spec/core/array/uniq_spec.rb +22 -0
  76. data/spec/core/array/zip_spec.rb +20 -0
  77. data/{core_spec → spec}/core/class/new_spec.rb +1 -4
  78. data/{core_spec → spec}/core/enumerable/all_spec.rb +1 -4
  79. data/{core_spec → spec}/core/enumerable/any_spec.rb +1 -4
  80. data/{core_spec/core/enumerable/shared/collect.rb → spec/core/enumerable/collect_spec.rb} +1 -1
  81. data/{core_spec → spec}/core/enumerable/count_spec.rb +2 -5
  82. data/{core_spec → spec}/core/enumerable/fixtures/classes.rb +1 -2
  83. data/{core_spec → spec}/core/false/and_spec.rb +1 -3
  84. data/{core_spec → spec}/core/false/inspect_spec.rb +1 -3
  85. data/{core_spec → spec}/core/false/or_spec.rb +1 -3
  86. data/{core_spec → spec}/core/false/to_s_spec.rb +1 -3
  87. data/{core_spec → spec}/core/false/xor_spec.rb +1 -3
  88. data/{core_spec → spec}/core/hash/allocate_spec.rb +1 -3
  89. data/spec/core/hash/assoc_spec.rb +25 -0
  90. data/{core_spec → spec}/core/hash/clear_spec.rb +1 -3
  91. data/{core_spec → spec}/core/hash/clone_spec.rb +1 -3
  92. data/{core_spec → spec}/core/hash/default_spec.rb +1 -3
  93. data/{core_spec → spec}/core/hash/delete_if_spec.rb +1 -3
  94. data/{core_spec → spec}/core/hash/element_reference_spec.rb +1 -3
  95. data/{core_spec → spec}/core/hash/element_set_spec.rb +1 -3
  96. data/spec/core/hash/merge_spec.rb +37 -0
  97. data/{core_spec → spec}/core/hash/new_spec.rb +1 -3
  98. data/{core_spec → spec}/core/matchdata/to_a_spec.rb +1 -3
  99. data/{core_spec → spec}/core/nil/and_spec.rb +1 -4
  100. data/{core_spec → spec}/core/nil/inspect_spec.rb +1 -4
  101. data/{core_spec → spec}/core/nil/nil_spec.rb +1 -4
  102. data/{core_spec → spec}/core/nil/or_spec.rb +1 -4
  103. data/{core_spec → spec}/core/nil/to_a_spec.rb +1 -4
  104. data/{core_spec → spec}/core/nil/to_f_spec.rb +1 -4
  105. data/{core_spec → spec}/core/nil/to_i_spec.rb +1 -4
  106. data/{core_spec → spec}/core/nil/to_s_spec.rb +1 -4
  107. data/{core_spec → spec}/core/nil/xor_spec.rb +1 -4
  108. data/{core_spec → spec}/core/numeric/equal_value_spec.rb +1 -3
  109. data/{core_spec → spec}/core/regexp/match_spec.rb +10 -3
  110. data/{core_spec → spec}/core/symbol/to_proc_spec.rb +1 -3
  111. data/{core_spec → spec}/core/true/and_spec.rb +1 -3
  112. data/{core_spec → spec}/core/true/inspect_spec.rb +1 -3
  113. data/{core_spec → spec}/core/true/or_spec.rb +1 -3
  114. data/{core_spec → spec}/core/true/to_s_spec.rb +1 -3
  115. data/{core_spec → spec}/core/true/xor_spec.rb +1 -3
  116. data/spec/index.html +11 -0
  117. data/{core_spec → spec}/language/alias_spec.rb +1 -3
  118. data/{core_spec → spec}/language/and_spec.rb +1 -4
  119. data/{core_spec → spec}/language/array_spec.rb +1 -4
  120. data/{core_spec → spec}/language/block_spec.rb +20 -3
  121. data/{core_spec → spec}/language/break_spec.rb +40 -3
  122. data/{core_spec → spec}/language/case_spec.rb +1 -4
  123. data/{core_spec → spec}/language/defined_spec.rb +9 -3
  124. data/{core_spec → spec}/language/ensure_spec.rb +38 -3
  125. data/{core_spec → spec}/language/hash_spec.rb +1 -3
  126. data/{core_spec → spec}/language/if_spec.rb +1 -4
  127. data/{core_spec → spec}/language/loop_spec.rb +1 -3
  128. data/spec/language/metaclass_spec.rb +13 -0
  129. data/{core_spec → spec}/language/next_spec.rb +47 -3
  130. data/{core_spec → spec}/language/or_spec.rb +1 -4
  131. data/{core_spec → spec}/language/predefined_spec.rb +1 -3
  132. data/{core_spec/language/regexp/interpolation_spec.rb → spec/language/regexp_spec.rb} +6 -3
  133. data/{core_spec → spec}/language/send_spec.rb +38 -4
  134. data/spec/language/singleton_class_spec.rb +31 -0
  135. data/spec/language/super_spec.rb +188 -0
  136. data/{core_spec → spec}/language/symbol_spec.rb +1 -3
  137. data/{core_spec → spec}/language/undef_spec.rb +1 -3
  138. data/{core_spec → spec}/language/unless_spec.rb +1 -4
  139. data/{core_spec → spec}/language/until_spec.rb +1 -3
  140. data/{core_spec → spec}/language/variables_spec.rb +1 -3
  141. data/{core_spec → spec}/language/while_spec.rb +1 -3
  142. data/{spec → test}/builder/build_source_spec.rb +0 -0
  143. data/{spec → test}/builder/fixtures/build_source/adam.rb +0 -0
  144. data/{spec → test}/builder/fixtures/build_source/bar/a.rb +0 -0
  145. data/{spec → test}/builder/fixtures/build_source/bar/wow/b.rb +0 -0
  146. data/{spec → test}/builder/fixtures/build_source/bar/wow/cow/c.rb +0 -0
  147. data/{spec → test}/builder/fixtures/build_source/beynon.rb +0 -0
  148. data/{spec → test}/builder/fixtures/build_source/charles.js +0 -0
  149. data/{spec → test}/builder/fixtures/build_source/foo/a.rb +0 -0
  150. data/{spec → test}/builder/fixtures/build_source/foo/b.rb +0 -0
  151. data/{spec → test}/builder/fixtures/build_source/foo/x.js +0 -0
  152. data/{spec → test}/builder/fixtures/build_source/foo/y.js +0 -0
  153. data/{spec → test}/grammar/alias_spec.rb +0 -0
  154. data/{spec → test}/grammar/and_spec.rb +0 -0
  155. data/{spec → test}/grammar/array_spec.rb +0 -0
  156. data/{spec → test}/grammar/attrasgn_spec.rb +0 -0
  157. data/{spec → test}/grammar/begin_spec.rb +0 -0
  158. data/{spec → test}/grammar/block_spec.rb +0 -0
  159. data/{spec → test}/grammar/break_spec.rb +0 -0
  160. data/{spec → test}/grammar/call_spec.rb +0 -0
  161. data/{spec → test}/grammar/class_spec.rb +0 -0
  162. data/{spec → test}/grammar/const_spec.rb +0 -0
  163. data/{spec → test}/grammar/cvar_spec.rb +0 -0
  164. data/{spec → test}/grammar/def_spec.rb +0 -0
  165. data/{spec → test}/grammar/false_spec.rb +0 -0
  166. data/{spec → test}/grammar/file_spec.rb +0 -0
  167. data/{spec → test}/grammar/gvar_spec.rb +0 -0
  168. data/{spec → test}/grammar/hash_spec.rb +0 -0
  169. data/{spec → test}/grammar/iasgn_spec.rb +0 -0
  170. data/{spec → test}/grammar/if_spec.rb +0 -0
  171. data/{spec → test}/grammar/iter_spec.rb +0 -0
  172. data/{spec → test}/grammar/ivar_spec.rb +0 -0
  173. data/{spec → test}/grammar/lasgn_spec.rb +0 -0
  174. data/{spec → test}/grammar/line_spec.rb +0 -0
  175. data/{spec → test}/grammar/lvar_spec.rb +0 -0
  176. data/{spec → test}/grammar/masgn_spec.rb +0 -0
  177. data/{spec → test}/grammar/module_spec.rb +0 -0
  178. data/{spec → test}/grammar/nil_spec.rb +0 -0
  179. data/{spec → test}/grammar/not_spec.rb +0 -0
  180. data/{spec → test}/grammar/op_asgn1_spec.rb +0 -0
  181. data/{spec → test}/grammar/op_asgn2_spec.rb +0 -0
  182. data/{spec → test}/grammar/or_spec.rb +0 -0
  183. data/{spec → test}/grammar/return_spec.rb +0 -0
  184. data/{spec → test}/grammar/sclass_spec.rb +0 -0
  185. data/{spec → test}/grammar/self_spec.rb +0 -0
  186. data/{spec → test}/grammar/str_spec.rb +0 -0
  187. data/{spec → test}/grammar/super_spec.rb +0 -0
  188. data/{spec → test}/grammar/true_spec.rb +0 -0
  189. data/{spec → test}/grammar/undef_spec.rb +0 -0
  190. data/{spec → test}/grammar/unless_spec.rb +0 -0
  191. data/{spec → test}/grammar/while_spec.rb +0 -0
  192. data/{spec → test}/grammar/xstr_spec.rb +0 -0
  193. data/{spec → test}/grammar/yield_spec.rb +0 -0
  194. data/{spec → test}/spec_helper.rb +0 -0
  195. metadata +330 -264
  196. data/core/debug.js +0 -59
  197. data/core/debug.rb +0 -35
  198. data/core/dir.rb +0 -90
  199. data/core/file.rb +0 -83
  200. data/core/gemlib.rb +0 -30
  201. data/core/io.rb +0 -44
  202. data/core_spec/README.md +0 -34
  203. data/core_spec/core/array/collect_spec.rb +0 -3
  204. data/core_spec/core/array/element_set_spec.rb +0 -7
  205. data/core_spec/core/array/eql_spec.rb +0 -3
  206. data/core_spec/core/array/equal_value_spec.rb +0 -3
  207. data/core_spec/core/array/fixtures/classes.rb +0 -8
  208. data/core_spec/core/array/length_spec.rb +0 -3
  209. data/core_spec/core/array/map_spec.rb +0 -3
  210. data/core_spec/core/array/replace_spec.rb +0 -3
  211. data/core_spec/core/enumerable/collect_spec.rb +0 -3
  212. data/core_spec/core/enumerable/detect_spec.rb +0 -3
  213. data/core_spec/core/enumerable/find_spec.rb +0 -3
  214. data/core_spec/core/enumerable/first_spec.rb +0 -3
  215. data/core_spec/core/enumerable/shared/entries.rb +0 -7
  216. data/core_spec/core/enumerable/shared/find.rb +0 -49
  217. data/core_spec/core/enumerable/shared/take.rb +0 -31
  218. data/core_spec/core/enumerable/to_a_spec.rb +0 -7
  219. data/core_spec/core/hash/assoc_spec.rb +0 -29
  220. data/core_spec/core/object/is_a_spec.rb +0 -2
  221. data/core_spec/core/object/shared/kind_of.rb +0 -0
  222. data/core_spec/core/regexp/shared/match.rb +0 -11
  223. data/core_spec/language/fixtures/block.rb +0 -19
  224. data/core_spec/language/fixtures/break.rb +0 -39
  225. data/core_spec/language/fixtures/defined.rb +0 -9
  226. data/core_spec/language/fixtures/ensure.rb +0 -37
  227. data/core_spec/language/fixtures/next.rb +0 -46
  228. data/core_spec/language/fixtures/send.rb +0 -36
  229. data/core_spec/language/fixtures/super.rb +0 -43
  230. data/core_spec/language/regexp_spec.rb +0 -7
  231. data/core_spec/language/string_spec.rb +0 -4
  232. data/core_spec/language/super_spec.rb +0 -18
  233. data/core_spec/language/versions/hash_1.9.rb +0 -20
  234. data/core_spec/opal/opal/defined_spec.rb +0 -15
  235. data/core_spec/opal/opal/function_spec.rb +0 -11
  236. data/core_spec/opal/opal/native_spec.rb +0 -16
  237. data/core_spec/opal/opal/null_spec.rb +0 -10
  238. data/core_spec/opal/opal/number_spec.rb +0 -11
  239. data/core_spec/opal/opal/object_spec.rb +0 -16
  240. data/core_spec/opal/opal/string_spec.rb +0 -11
  241. data/core_spec/opal/opal/typeof_spec.rb +0 -9
  242. data/core_spec/opal/opal/undefined_spec.rb +0 -10
  243. data/core_spec/opal/true/case_compare_spec.rb +0 -12
  244. data/core_spec/opal/true/class_spec.rb +0 -10
  245. data/core_spec/release_runner.html +0 -17
  246. data/core_spec/runner.html +0 -16
  247. data/core_spec/spec_helper.rb +0 -23
  248. data/lib/opal/context.rb +0 -269
  249. data/lib/opal/dependency_builder.rb +0 -133
  250. data/lib/opal/environment.rb +0 -87
  251. data/lib/opal/parser/sexp.rb +0 -17
@@ -1,133 +0,0 @@
1
- #### Opal Dependency Builder
2
- #
3
- # The `DependencyBuilder` class is used to build all dependencies for
4
- # an app/lib, including the opal runtime. Dependencies in opal are
5
- # simply gems that have been installed or are referenced by any relevant
6
- # `Gemfile` or `.gemspec`.
7
- #
8
- # To build a predefined set of dependencies, they can be passed directly
9
- # to `DependencyBuilder`. Any gems here must be already installed and
10
- # available to opal to find. An example may be:
11
- #
12
- # Opal::DependencyBuilder.new(:gems => ['opal-spec']).build
13
- #
14
- # This will build the `opal-spec` dependency into the working directory.
15
- # This will create `opal-spec.js` and `opal-spec.debug.js`, which are the
16
- # release and debug versions of the gem respectively.
17
- #
18
- # The alternative to this approach is to use a `Gemfile`. Opal can pick
19
- # out dependencies from a `Gemfile` in the current working directory. As
20
- # there will be some non-opal dependnecies in the `Gemfile`, all gems that
21
- # should be built **must** be inside an `:opal` group:
22
- #
23
- # # Gemfile
24
- # gem "opal"
25
- # gem "therubyracer"
26
- #
27
- # group :opal do
28
- # gem "opal-spec"
29
- # end
30
- #
31
- # Now running the dependency builder as:
32
- #
33
- # Opal::DependencyBuilder.new.build
34
- #
35
- # Will built all dependnecies inside the opal group (just `opal-spec`) in
36
- # both debug and release mode.
37
- #
38
- # When developing a gem for opal, the `.gemspec` already has a list of
39
- # buildable gems inside the gem specification. If a `.gemspec` is also
40
- # found then all runtime dependnecies will be built as well. It is crucial
41
- # that **only** dependencies to run inside opal should be listed as a runtime
42
- # dependency.
43
- #
44
- # Note, `opal` is **not** a runtime dependency, as it is built as a special
45
- # case. Whenever `DependencyBuilder` is run, `opal.js` and `opal.debug.js`
46
- # are also built.
47
- #
48
- # Finally, to write to a custom output directory, `:out` can be passed. This
49
- # should be a directory and not a file as all dependnecies are built
50
- # individually. For example:
51
- #
52
- # Opal::DependencyBuilder.new(:gems => 'opal-spec', :out => 'build').build
53
- #
54
- # This will create `build/opal-spec.js` and `build/opal-spec.debug.js` (as well
55
- # as the runtime files `opal.js` and `opal.debug.js`.
56
- #
57
-
58
- # The `Environment` is used to find relevant `Gemfile` and `.gemspec` to use to
59
- # gather dependency names.
60
- require 'opal/environment'
61
-
62
- module Opal
63
- # `DependencyBuilder.new` takes an optional hash of build options which control
64
- # what dependencies are being built. The possible `options` are:
65
- #
66
- # * `:out`: specifies the directory to build the resulting files to. This
67
- # directory will be created if it doesn't exist. _Defaults to `Dir.getwd`_.
68
- #
69
- # * `:gems`: an array (or single string) of gem dependencies to build. If not
70
- # given then the `Gemfile` or `.gemspec` will be inspected as described above.
71
- class DependencyBuilder
72
-
73
- def initialize(options = {})
74
- @options = options
75
- end
76
-
77
- def build
78
- @environment = Environment.load Dir.getwd
79
- @verbose = true
80
- @base = File.expand_path(@options[:out] || '.')
81
-
82
- FileUtils.mkdir_p @base
83
-
84
- calculate_dependencies(@options[:gems]).each do |g|
85
- if spec = @environment.find_spec(g)
86
- build_spec spec
87
- else
88
- puts "Cannot find gem dependency #{g}"
89
- end
90
- end
91
-
92
- build_opal
93
- end
94
-
95
- # Gather a list of dependencies to build. These are taken from the
96
- # following order:
97
- #
98
- # 1. if rake task given a list, use those.
99
- # 2. Use dependnecies listed in Gemfile :opal group, if it exists
100
- # 3. Use all runtime dependnecies from local gemspec (if it exists)
101
- #
102
- # If none of these are applicable, no dependnecies will be built.
103
- #
104
- # @param [Array, String] gems gems passed to rake task
105
- # @return [Array<String>] an array of gem names to build
106
- def calculate_dependencies(gems)
107
- return Array(gems) if gems
108
- @environment.specs
109
- end
110
-
111
- def build_spec(spec)
112
- sources = spec.require_paths
113
- output = File.expand_path("#{spec.name}.js", @options[:out] || '.')
114
-
115
- Dir.chdir(spec.full_gem_path) do
116
- Builder.new(:files => sources, :out => output).build
117
- end
118
- end
119
-
120
- # Builds/copies the opal runtime into the :out directory.
121
- def build_opal
122
- release = File.expand_path("opal.js", @options[:out] || '.')
123
- debug = File.expand_path("opal.debug.js", @options[:out] || '.')
124
- puts "[opal] building runtime (#{release}, #{debug})"
125
-
126
- runtime = Opal.runtime_code
127
- debugrun = Opal.runtime_debug_code
128
-
129
- File.open(release, 'w+') { |o| o.write runtime }
130
- File.open(debug, 'w+') { |o| o.write debugrun }
131
- end
132
- end
133
- end
@@ -1,87 +0,0 @@
1
- module Opal
2
- # Default Environment that assumes no Gemfile or gemspec for the given
3
- # app/library.
4
- class Environment
5
- def self.load(dir)
6
- return GemfileEnvironment.new dir if File.exists? File.join(dir, 'Gemfile')
7
- return GemspecEnvironment.new dir unless Dir["#{dir}/*.gemspec"].empty?
8
- return Environment.new dir
9
- end
10
-
11
- attr_accessor :files
12
- attr_reader :root
13
-
14
- def initialize(root)
15
- @root = root
16
- end
17
-
18
- # Find a gem specification with the given name. Returns nil if one
19
- # can't be found
20
- # @return [Gem::Specification]
21
- def find_spec(name)
22
- Gem::Specification.find_by_name name
23
- rescue Gem::LoadError
24
- nil
25
- end
26
-
27
- def specs
28
- []
29
- end
30
-
31
- def name
32
- File.basename @root
33
- end
34
-
35
- # Default require paths is just 'lib'
36
- def require_paths
37
- ['lib']
38
- end
39
-
40
- def gemspec
41
- @gemspec ||= Dir['*.gemspec'].first
42
- end
43
- end
44
-
45
- # Used for libs/gems that have a gemspec (but no Gemfile!).
46
- class GemspecEnvironment < Environment
47
- def specs
48
- if spec = self.gemspec
49
- gemspec = Gem::Specification.load spec
50
- return gemspec.runtime_dependencies.map(&:name)
51
- end
52
-
53
- []
54
- end
55
- end
56
-
57
- # Used for environments which use a Gemfile
58
- class GemfileEnvironment < Environment
59
- def bundler
60
- return @bundler if @bundler
61
- require 'bundler'
62
- @bundler = Bundler.load
63
- end
64
-
65
- # Returns an array of names of the specs that are listed inside the
66
- # given group. This defaults to :opal as that is where specs are
67
- # built from.
68
- # @return [Array<String>]
69
- def specs(group = :opal)
70
- names = bundler.dependencies_for(group).map(&:name)
71
-
72
- if gemspec = self.gemspec
73
- gemspec = Gem::Specification.load gemspec
74
- names += gemspec.runtime_dependencies.map(&:name)
75
- end
76
-
77
- names.uniq
78
- end
79
-
80
- def find_spec(name)
81
- bundler
82
- Gem::Specification.find_by_name name
83
- rescue Gem::LoadError
84
- nil
85
- end
86
- end
87
- end
@@ -1,17 +0,0 @@
1
- module Opal
2
- class Sexp < Array
3
- attr_accessor :line, :end_line
4
-
5
- def initialize *parts
6
- push *parts
7
- @line = 0
8
- @end_line = 0
9
- end
10
-
11
- def inspect
12
- "s(#{map { |x| x.inspect }.join ', ' })"
13
- end
14
-
15
- alias_method :to_s, :inspect
16
- end
17
- end