opal 0.3.9 → 0.3.10
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +28 -5
- data/bin/opal +0 -3
- data/lib/opal.rb +8 -3
- data/lib/opal/builder.rb +10 -1
- data/lib/opal/bundle.rb +48 -0
- data/lib/opal/command.rb +18 -6
- data/lib/opal/context.rb +68 -44
- data/lib/opal/lexer.rb +702 -682
- data/lib/opal/nodes.rb +3 -1
- data/lib/opal/rake/bundle_task.rb +62 -0
- metadata +4 -5
- data/lib/opal/browserify.rb +0 -34
- data/lib/rbp.rb +0 -2
- data/lib/rbp/package.rb +0 -49
data/lib/opal/nodes.rb
CHANGED
@@ -225,7 +225,8 @@ module Opal
|
|
225
225
|
# code << super(opts, level)
|
226
226
|
code << @statements.generate(opts, level)
|
227
227
|
|
228
|
-
pre
|
228
|
+
pre = "function($rb, self, __FILE__) {"
|
229
|
+
pre += 'function $$(){'
|
229
230
|
post = "\n}\n"
|
230
231
|
|
231
232
|
unless @scope_vars.empty?
|
@@ -250,6 +251,7 @@ module Opal
|
|
250
251
|
end
|
251
252
|
|
252
253
|
post += "return $$();\n"
|
254
|
+
post += "}"
|
253
255
|
|
254
256
|
pre + code.join('') + post
|
255
257
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/tasklib'
|
3
|
+
|
4
|
+
module Opal
|
5
|
+
module Rake
|
6
|
+
|
7
|
+
class BundleTask
|
8
|
+
|
9
|
+
# The output file to bundle this package to. This should be a full
|
10
|
+
# path including '.js' extension. This defaults to
|
11
|
+
# name-version.js
|
12
|
+
#
|
13
|
+
# @return [String] full path to bundle package to.
|
14
|
+
attr_accessor :out
|
15
|
+
|
16
|
+
# The path to the package.yml file for the package to build. This
|
17
|
+
# defaults to package.yml in the current directory.
|
18
|
+
#
|
19
|
+
# @return [String] path to package.yml
|
20
|
+
attr_accessor :package
|
21
|
+
|
22
|
+
# A hash of parser options passed to each compile stage. This
|
23
|
+
# accepts various options such as `:method_missing`. See
|
24
|
+
# [Parser] for more information.
|
25
|
+
#
|
26
|
+
# @return [Hash] hash of parser options
|
27
|
+
attr_accessor :options
|
28
|
+
|
29
|
+
def initialize(name = :bundle)
|
30
|
+
@name = name
|
31
|
+
@options = {}
|
32
|
+
@package = 'package.yml'
|
33
|
+
|
34
|
+
yield self if block_given?
|
35
|
+
|
36
|
+
define
|
37
|
+
end
|
38
|
+
|
39
|
+
def define
|
40
|
+
desc "Bundle this package ready for a web browser"
|
41
|
+
task(@name) do
|
42
|
+
# lazy load rbp/bundle incase not installed yet - we dont want to
|
43
|
+
# disrupt other take tasks.
|
44
|
+
require 'opal/bundle'
|
45
|
+
|
46
|
+
path = File.expand_path(@package || 'package.yml')
|
47
|
+
raise "Cannot find package: `#{path}'" unless File.exists? path
|
48
|
+
|
49
|
+
package = Rbp::Package.load_path path
|
50
|
+
bundle = Bundle.new package
|
51
|
+
bundle.options = options
|
52
|
+
code = bundle.build
|
53
|
+
|
54
|
+
File.open("#{package.name}-#{package.version}.js", 'w+') do |out|
|
55
|
+
out.write code
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-22 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: Ruby runtime and core library for javascript
|
15
15
|
email:
|
@@ -20,17 +20,16 @@ extensions: []
|
|
20
20
|
extra_rdoc_files: []
|
21
21
|
files:
|
22
22
|
- bin/opal
|
23
|
-
- lib/opal/browserify.rb
|
24
23
|
- lib/opal/builder.rb
|
24
|
+
- lib/opal/bundle.rb
|
25
25
|
- lib/opal/command.rb
|
26
26
|
- lib/opal/context.rb
|
27
27
|
- lib/opal/lexer.rb
|
28
28
|
- lib/opal/nodes.rb
|
29
29
|
- lib/opal/parser.rb
|
30
30
|
- lib/opal/parser.y
|
31
|
+
- lib/opal/rake/bundle_task.rb
|
31
32
|
- lib/opal.rb
|
32
|
-
- lib/rbp/package.rb
|
33
|
-
- lib/rbp.rb
|
34
33
|
- runtime/class.js
|
35
34
|
- runtime/fs.js
|
36
35
|
- runtime/init.js
|
data/lib/opal/browserify.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module Opal
|
2
|
-
|
3
|
-
# Takes a package and builds it ready for the browser
|
4
|
-
class Browserify
|
5
|
-
|
6
|
-
def initialize(package)
|
7
|
-
@package = package
|
8
|
-
@builder = Builder.new
|
9
|
-
end
|
10
|
-
|
11
|
-
# Simple build - returns a string which can be written to a file
|
12
|
-
# FIXME: hardcoded lib directory to './lib'
|
13
|
-
def build
|
14
|
-
libs = @package.lib_files
|
15
|
-
libs.map! do |f|
|
16
|
-
path = File.join @package.root, './lib', f
|
17
|
-
src = @builder.compile_source path
|
18
|
-
"\"#{f}\": #{src}"
|
19
|
-
end
|
20
|
-
|
21
|
-
bundle = []
|
22
|
-
bundle << %[opal.package({\n]
|
23
|
-
bundle << %[ name: "#{@package.name}",\n]
|
24
|
-
bundle << %[ version: "#{@package.version}",\n]
|
25
|
-
bundle << %[ libs: {\n]
|
26
|
-
bundle << %[ #{libs.join ",\n "}\n]
|
27
|
-
bundle << %[ }\n]
|
28
|
-
bundle << %[});\n]
|
29
|
-
|
30
|
-
bundle.join ''
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
data/lib/rbp.rb
DELETED
data/lib/rbp/package.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
require 'yaml'
|
2
|
-
|
3
|
-
module RBP
|
4
|
-
|
5
|
-
class Package
|
6
|
-
|
7
|
-
attr_reader :root
|
8
|
-
|
9
|
-
def initialize(root = Dir.getwd)
|
10
|
-
@root = root
|
11
|
-
__load_yml
|
12
|
-
end
|
13
|
-
|
14
|
-
def __load_yml
|
15
|
-
yml_path = File.join @root, 'package.yml'
|
16
|
-
|
17
|
-
unless File.exists? yml_path
|
18
|
-
raise "Missing package.yml in `#{@root}'"
|
19
|
-
end
|
20
|
-
|
21
|
-
@yml = YAML.load File.read(yml_path)
|
22
|
-
|
23
|
-
raise "Bad package.yml" unless @yml and @yml['name'] and @yml['version']
|
24
|
-
end
|
25
|
-
|
26
|
-
# Returns an array of lib files relative to the root of
|
27
|
-
# this package
|
28
|
-
def lib_files
|
29
|
-
libs = nil
|
30
|
-
|
31
|
-
Dir.chdir(File.join @root, 'lib') do
|
32
|
-
libs = Dir['**/*.rb']
|
33
|
-
end
|
34
|
-
|
35
|
-
libs
|
36
|
-
end
|
37
|
-
|
38
|
-
# package name
|
39
|
-
def name
|
40
|
-
@yml['name']
|
41
|
-
end
|
42
|
-
|
43
|
-
# package version
|
44
|
-
def version
|
45
|
-
@yml['version']
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|