opal 0.3.16 → 0.3.17

Sign up to get free protection for your applications and to get access to all the features.
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