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.
Files changed (52) hide show
  1. data/bin/js2 +9 -126
  2. data/bin/js2-ruby +13 -0
  3. data/lib/js2/command.rb +16 -0
  4. data/lib/js2/context.rb +35 -0
  5. data/lib/js2/fs.rb +56 -0
  6. data/lib/js2/js2.js +1265 -0
  7. data/lib/js2/rack.rb +35 -0
  8. data/lib/js2.rb +19 -30
  9. metadata +28 -91
  10. data/CHANGELOG +0 -17
  11. data/Manifest +0 -45
  12. data/README.md +0 -75
  13. data/Rakefile +0 -28
  14. data/config/js2.yml +0 -2
  15. data/js2.gemspec +0 -36
  16. data/lib/js2/parser/haml.rb +0 -145
  17. data/lib/js2/parser/haml_engine.rb +0 -19
  18. data/lib/js2/parser/lexer.rb +0 -37
  19. data/lib/js2/parser/tokenizer.rb +0 -3551
  20. data/lib/js2/ragel/helper.rb +0 -117
  21. data/lib/js2/ragel/tokenizer.rl +0 -561
  22. data/lib/js2/ragel/tokenizer.rl.erb +0 -347
  23. data/lib/js2/standard/class_node.rb +0 -0
  24. data/lib/js2/standard/factory.rb +0 -289
  25. data/lib/js2/standard/node.rb +0 -75
  26. data/lib/js2/util/compilation.rb +0 -77
  27. data/lib/js2/util/config.rb +0 -84
  28. data/lib/js2/util/exec.rb +0 -34
  29. data/lib/js2/util/file_handler.rb +0 -73
  30. data/lib/js2/util/haml_filter.rb +0 -13
  31. data/lib/js2/util/jamis.rb +0 -600
  32. data/lib/js2/util/js2bootstrap.js2 +0 -448
  33. data/lib/js2/util/processor.rb +0 -88
  34. data/lib/js2/util/rdoc.rb +0 -37
  35. data/lib/js2/util/sel_decorator.rb +0 -155
  36. data/test/compiled/bar.js +0 -3
  37. data/test/compiled/basic.comp.js +0 -31
  38. data/test/compiled/basic.js +0 -27
  39. data/test/compiled/foo.js +0 -3
  40. data/test/fixtures/bar.js2 +0 -3
  41. data/test/fixtures/basic.js2 +0 -27
  42. data/test/fixtures/basic.js2.haml +0 -4
  43. data/test/fixtures/basic.js2.yml +0 -5
  44. data/test/fixtures/curry.js2 +0 -5
  45. data/test/fixtures/foo.js2 +0 -3
  46. data/test/fixtures/member.js2 +0 -14
  47. data/test/fixtures/private.js2 +0 -5
  48. data/test/fixtures/property.js2 +0 -4
  49. data/test/test_helper.rb +0 -25
  50. data/test/test_js2.rb +0 -43
  51. data/wiki/features.md +0 -73
  52. data/wiki/installation.md +0 -13
@@ -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
@@ -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
@@ -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