js2 0.1.8 → 0.3.0.pre5
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.
- data/bin/js2 +9 -126
- data/bin/js2-ruby +13 -0
- data/lib/js2/command.rb +16 -0
- data/lib/js2/context.rb +35 -0
- data/lib/js2/fs.rb +56 -0
- data/lib/js2/js2.js +1265 -0
- data/lib/js2/rack.rb +35 -0
- data/lib/js2.rb +19 -30
- metadata +28 -91
- data/CHANGELOG +0 -17
- data/Manifest +0 -45
- data/README.md +0 -75
- data/Rakefile +0 -28
- data/config/js2.yml +0 -2
- data/js2.gemspec +0 -36
- data/lib/js2/parser/haml.rb +0 -145
- data/lib/js2/parser/haml_engine.rb +0 -19
- data/lib/js2/parser/lexer.rb +0 -37
- data/lib/js2/parser/tokenizer.rb +0 -3551
- data/lib/js2/ragel/helper.rb +0 -117
- data/lib/js2/ragel/tokenizer.rl +0 -561
- data/lib/js2/ragel/tokenizer.rl.erb +0 -347
- data/lib/js2/standard/class_node.rb +0 -0
- data/lib/js2/standard/factory.rb +0 -289
- data/lib/js2/standard/node.rb +0 -75
- data/lib/js2/util/compilation.rb +0 -77
- data/lib/js2/util/config.rb +0 -84
- data/lib/js2/util/exec.rb +0 -34
- data/lib/js2/util/file_handler.rb +0 -73
- data/lib/js2/util/haml_filter.rb +0 -13
- data/lib/js2/util/jamis.rb +0 -600
- data/lib/js2/util/js2bootstrap.js2 +0 -448
- data/lib/js2/util/processor.rb +0 -88
- data/lib/js2/util/rdoc.rb +0 -37
- data/lib/js2/util/sel_decorator.rb +0 -155
- data/test/compiled/bar.js +0 -3
- data/test/compiled/basic.comp.js +0 -31
- data/test/compiled/basic.js +0 -27
- data/test/compiled/foo.js +0 -3
- data/test/fixtures/bar.js2 +0 -3
- data/test/fixtures/basic.js2 +0 -27
- data/test/fixtures/basic.js2.haml +0 -4
- data/test/fixtures/basic.js2.yml +0 -5
- data/test/fixtures/curry.js2 +0 -5
- data/test/fixtures/foo.js2 +0 -3
- data/test/fixtures/member.js2 +0 -14
- data/test/fixtures/private.js2 +0 -5
- data/test/fixtures/property.js2 +0 -4
- data/test/test_helper.rb +0 -25
- data/test/test_js2.rb +0 -43
- data/wiki/features.md +0 -73
- data/wiki/installation.md +0 -13
data/lib/js2/util/compilation.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
class JS2::Util::Compilation
|
2
|
-
attr_accessor :klass_name, :require, :include, :template, :file
|
3
|
-
@@already = Hash.new
|
4
|
-
|
5
|
-
def initialize (klass_name, config, yml_file, file_handler)
|
6
|
-
@require = config['require'] || []
|
7
|
-
@include = config['include'] || []
|
8
|
-
@template = config['template'] || []
|
9
|
-
@klass_name = klass_name
|
10
|
-
@file = yml_file
|
11
|
-
@file_handler = file_handler
|
12
|
-
|
13
|
-
@make_compilation = config['make_compilation']
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.parse (yml_file, file_handler)
|
17
|
-
klasses = YAML.load_file(yml_file)
|
18
|
-
|
19
|
-
comps = []
|
20
|
-
klasses.each_pair do |k, config|
|
21
|
-
comps << self.new(k, config, yml_file, file_handler)
|
22
|
-
end
|
23
|
-
|
24
|
-
return comps
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.reset!
|
28
|
-
@@already = Hash.new
|
29
|
-
end
|
30
|
-
|
31
|
-
def compile (klasses, errors = [])
|
32
|
-
return unless @make_compilation
|
33
|
-
|
34
|
-
main_file = nil
|
35
|
-
if files = klasses[@klass_name]
|
36
|
-
main_file = @file_handler.outfile(files.first)
|
37
|
-
else
|
38
|
-
return
|
39
|
-
end
|
40
|
-
|
41
|
-
before = []
|
42
|
-
@require.each do |file|
|
43
|
-
before += get_files(file, klasses)
|
44
|
-
end
|
45
|
-
|
46
|
-
after = []
|
47
|
-
@include.each do |file|
|
48
|
-
after += get_files(file, klasses)
|
49
|
-
end
|
50
|
-
|
51
|
-
@template.each do |item|
|
52
|
-
after += get_files(item['class'], klasses)
|
53
|
-
end
|
54
|
-
|
55
|
-
file = main_file.sub(/\.js$/, '.comp.js')
|
56
|
-
str = ''
|
57
|
-
(before + [ main_file ] + after).uniq.each do |f|
|
58
|
-
if File.exist?(f)
|
59
|
-
str << File.read(f)
|
60
|
-
else
|
61
|
-
errors << [ "#{file} references #{f}, but js2 can't find it" ]
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
str << "#{@klass_name}.oo('method', 'getTemplate', function () { return #{@template.to_json}; });"
|
66
|
-
File.open(file, 'w') { |f| f << str }
|
67
|
-
end
|
68
|
-
|
69
|
-
def get_files (klass_name_or_file, klasses)
|
70
|
-
ret = nil
|
71
|
-
if files = klasses[klass_name_or_file]
|
72
|
-
ret = files.collect { |f| @file_handler.outfile(f) }
|
73
|
-
else
|
74
|
-
ret = @file_handler.outfile(klass_name_or_file)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
data/lib/js2/util/config.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
class JS2::Util::Config
|
2
|
-
attr_accessor :node_factory, :lexer, :file_handler, :lexer, :haml_engine, :haml_vars, :asset_dir, :decorators
|
3
|
-
|
4
|
-
def initialize
|
5
|
-
@lexer = JS2::Parser::Lexer.new
|
6
|
-
@node_factory = JS2::Standard::Factory.new
|
7
|
-
@file_handler = JS2::Util::FileHandler.new
|
8
|
-
@haml_engine = JS2::Parser::HamlEngine.new
|
9
|
-
@haml_vars = {}
|
10
|
-
end
|
11
|
-
|
12
|
-
def add_decorator (decorator)
|
13
|
-
@node_factory.decorators << decorator
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.from_yml(yml, env = nil)
|
17
|
-
hash = YAML.load(yml)
|
18
|
-
hash = hash[env] if env
|
19
|
-
return self.from_hash(hash)
|
20
|
-
end
|
21
|
-
|
22
|
-
def load_hash (hash)
|
23
|
-
self.file_handler.js2_dir = hash['js2_dir'] if hash['js2_dir']
|
24
|
-
self.haml_engine = eval('::' + hash['haml_engine_class'] + '.new') if hash['haml_engine_class']
|
25
|
-
|
26
|
-
write_dir = hash['write_dir'] || hash['out_dir']
|
27
|
-
self.file_handler.out_dir = write_dir if write_dir
|
28
|
-
self.file_handler.haml_dir = hash['haml_dir'] || self.file_handler.js2_dir
|
29
|
-
end
|
30
|
-
|
31
|
-
def load_yml (yml, env = nil)
|
32
|
-
hash = YAML.load_file(yml)
|
33
|
-
hash = hash[env] if env
|
34
|
-
self.load_hash(hash)
|
35
|
-
end
|
36
|
-
|
37
|
-
def rails! (env = nil)
|
38
|
-
self.out_dir = './public/javascripts'
|
39
|
-
self.js2_dir = './app/js2'
|
40
|
-
self.haml_dir = './app/js2'
|
41
|
-
end
|
42
|
-
|
43
|
-
|
44
|
-
def out_dir= (dir)
|
45
|
-
@file_handler.out_dir = dir
|
46
|
-
end
|
47
|
-
|
48
|
-
def js2_dir= (dir)
|
49
|
-
@file_handler.js2_dir = dir
|
50
|
-
end
|
51
|
-
|
52
|
-
def haml_dir= (dir)
|
53
|
-
@file_handler.haml_dir = dir
|
54
|
-
end
|
55
|
-
|
56
|
-
def to_s
|
57
|
-
return <<-END
|
58
|
-
js2_dir: #{@file_handler.js2_dir}
|
59
|
-
out_dir: #{@file_handler.out_dir}
|
60
|
-
haml_dir: #{@file_handler.haml_dir}
|
61
|
-
END
|
62
|
-
end
|
63
|
-
|
64
|
-
def from_yml (yml, env = nil)
|
65
|
-
hash = YAML.load(yml)
|
66
|
-
hash = hash[env] if env
|
67
|
-
return self.from_hash(hash)
|
68
|
-
end
|
69
|
-
|
70
|
-
def self.from_hash(hash)
|
71
|
-
config = self.new
|
72
|
-
config.load_hash(hash)
|
73
|
-
|
74
|
-
return config
|
75
|
-
end
|
76
|
-
|
77
|
-
def example_yml
|
78
|
-
return <<-END
|
79
|
-
js2_dir: './app/js2'
|
80
|
-
haml_dir: './app/js2'
|
81
|
-
out_dir: './public/javascripts'
|
82
|
-
END
|
83
|
-
end
|
84
|
-
end
|
data/lib/js2/util/exec.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
class JS2::Util::Exec
|
2
|
-
def initialize (config, options)
|
3
|
-
@config = config
|
4
|
-
end
|
5
|
-
|
6
|
-
def rails!
|
7
|
-
@config.out_dir = './public/javascripts'
|
8
|
-
@config.js2_dir = './app/js2'
|
9
|
-
@config.asset_dir = './app/js2'
|
10
|
-
end
|
11
|
-
|
12
|
-
def normal!
|
13
|
-
@config.out_dir = '.'
|
14
|
-
@config.js2_dir = '.'
|
15
|
-
end
|
16
|
-
|
17
|
-
def daemonize (timeout = 1)
|
18
|
-
get_processor!
|
19
|
-
while 1
|
20
|
-
@processor.process!
|
21
|
-
sleep timeout
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def process
|
26
|
-
get_processor!
|
27
|
-
@processor.process!
|
28
|
-
end
|
29
|
-
|
30
|
-
def get_processor!
|
31
|
-
@processor = JS2::Util::Processor.new(@config)
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
@@ -1,73 +0,0 @@
|
|
1
|
-
class JS2::Util::FileHandler
|
2
|
-
attr_accessor :js2_dir, :out_dir, :haml_dir, :doc_dir
|
3
|
-
|
4
|
-
def initialize
|
5
|
-
@js2_dir = '.'
|
6
|
-
@out_dir = '.'
|
7
|
-
@haml_dir = '.'
|
8
|
-
@doc_dir = '.'
|
9
|
-
|
10
|
-
@lookup = {
|
11
|
-
:js2 => :js2_dir,
|
12
|
-
:haml => :haml_dir,
|
13
|
-
:yml => :js2_dir
|
14
|
-
}
|
15
|
-
|
16
|
-
@mtimes = Hash.new
|
17
|
-
end
|
18
|
-
|
19
|
-
def docfile (file)
|
20
|
-
return file.sub(/^#{@js2_dir}/, @doc_dir).sub(/\.js2$/, '.js')
|
21
|
-
end
|
22
|
-
|
23
|
-
def needs_update
|
24
|
-
@found = Hash.new
|
25
|
-
|
26
|
-
files = []
|
27
|
-
files += get_changed_files(:js2)
|
28
|
-
files += get_changed_files(:haml)
|
29
|
-
files += get_changed_files(:yml)
|
30
|
-
|
31
|
-
missing = false
|
32
|
-
@mtimes.keys.each do |f|
|
33
|
-
unless @found[f]
|
34
|
-
@mtimes.delete(f)
|
35
|
-
missing = true
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
return files
|
40
|
-
end
|
41
|
-
|
42
|
-
def outfile (file)
|
43
|
-
return file.sub(/^#{@js2_dir}/, @out_dir).sub(/\.js2$/, '.js')
|
44
|
-
end
|
45
|
-
|
46
|
-
def get_files (ext)
|
47
|
-
ext = ext.to_sym
|
48
|
-
|
49
|
-
my_ext = :js2 == ext ? 'js2' : "js2.#{ext}"
|
50
|
-
my_dir = self.send(@lookup[ext])
|
51
|
-
return Dir.glob(my_dir + "/**/*/*.#{my_ext}") + Dir.glob(my_dir + "/*.#{my_ext}")
|
52
|
-
end
|
53
|
-
|
54
|
-
def reset!
|
55
|
-
@mtimes = Hash.new
|
56
|
-
end
|
57
|
-
|
58
|
-
def get_changed_files (ext)
|
59
|
-
ret = []
|
60
|
-
get_files(ext).each do |f|
|
61
|
-
@found[f] = true
|
62
|
-
mtime = File.mtime(f)
|
63
|
-
if ! @mtimes[f] || @mtimes[f] < mtime
|
64
|
-
@mtimes[f] = mtime
|
65
|
-
ret << f
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
return ret
|
70
|
-
end
|
71
|
-
|
72
|
-
|
73
|
-
end
|
data/lib/js2/util/haml_filter.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
module Haml
|
2
|
-
module Filters
|
3
|
-
module Js2
|
4
|
-
include ::Haml::Filters::Base
|
5
|
-
CONFIG = JS2::Util::Config.new
|
6
|
-
|
7
|
-
def render(text)
|
8
|
-
page_node = CONFIG.lexer.parse(text, CONFIG.node_factory)
|
9
|
-
return %{<script language="JavaScript">#{page_node.to_s}</script>}
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|