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
data/bin/js2 CHANGED
@@ -1,130 +1,13 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'optparse'
4
- require 'ostruct'
5
-
6
- require 'rubygems'
7
- require 'js2'
8
-
9
-
10
- options = OpenStruct.new
11
- options.rails = false
12
- options.sleep_time = 1
13
- options.rdoc_bin = 'rdoc'
14
-
15
-
16
- op = OptionParser.new do |opts|
17
- opts.banner = "Usage: js2 <daemon|compile|rdoc|help|config> [options]"
18
-
19
- opts.on('-r', '--rails', "Rails (out_dir: ./public/javascript js2_dir: ./app/js2)") do |r|
20
- options.rails = true
21
- end
22
-
23
- opts.on('-e', '--environment ENV', "Mostly for use with rails or a yml file with multiple configurations.") do |env|
24
- options.env = env
25
- end
26
-
27
- opts.on('-c', '--config FILE', "Use js2.yml config file (run: js2 config to generate a config file)") do |file|
28
- options.yml = YAML.load_file(file)
29
- end
30
-
31
- opts.on('-i', '--include-rails', "Mostly for use with rails or a yml file with multiple configurations.") do |env|
32
- options.include_rails = true
33
- end
34
-
35
- opts.on('-s', '--sleep N', "Defines the wait time in between directory checks. This is only applicable to daemon mode.") do |t|
36
- options.sleep_time = t.to_i
37
- end
38
-
39
-
40
- opts.on('-j', '--js2-dir DIR', "Directory where js2 files reside. Defaults to current directory.") do |d|
41
- options.js2_dir = d
42
- end
43
-
44
- opts.on('-o', '--out-dir DIR', "Output directory where javascript is written to. Defaults to current directory.") do |d|
45
- options.out_dir = d
46
- end
47
-
48
- opts.on('-h', '--haml-dir DIR', "Directory where js2.haml files reside. Defaults to current directory.") do |d|
49
- options.haml_dir = d
50
- end
51
-
52
- opts.on('-d', '--rdoc EXECUTABLE', "Rdoc executable to use. Defaults to 'rdoc'") do |d|
53
- options.rdoc_bin = d
54
- end
55
-
56
- end
57
-
58
- main_action = ARGV.first
59
- if [ 'daemon', 'compile', 'rdoc', 'help', 'config' ].include?(main_action)
60
-
3
+ dir = File.expand_path('../../lib/', __FILE__)
4
+ dir = File.directory?(dir) ? (dir + '/') : ''
5
+
6
+ require "#{dir}js2"
7
+ if (ARGV[0] == 'run')
8
+ file = ARGV[1]
9
+ c = JS2::Context.new
10
+ c.eval(File.read(file))
61
11
  else
62
- main_action = nil
63
- end
64
-
65
- if main_action == 'help' || ! main_action
66
- puts op
67
- exit
68
- end
69
-
70
- if ! main_action
71
- main_action = 'daemon'
72
- end
73
-
74
- op.parse!
75
-
76
- if options.yml && options.env
77
- options.yml = options.yml[options.env]
78
- end
79
-
80
- if options.yml
81
- options.yml.each_pair do |k,v|
82
- options.send(k +'=', v) if options.send(k) == nil
83
- end
84
- end
85
-
86
- puts options.inspect
87
- puts options.include_rails.inspect
88
-
89
- if options.include_rails
90
- puts "loading rails environment..."
91
- ENV['RAILS_ENV'] = options.env if options.env
92
- require './config/environment'
93
- end
94
-
95
- config = JS2::Util::Config.new
96
-
97
- if options.rails
98
- config.rails!
99
- end
100
-
101
- config.out_dir = options.out_dir if options.out_dir
102
- config.js2_dir = options.js2_dir if options.js2_dir
103
- config.haml_dir = options.haml_dir if options.haml_dir
104
- config.haml_engine = eval('::' + options.haml_engine_class + '.new') if options.haml_engine_class
105
-
106
- puts config
107
-
108
- if main_action == 'config'
109
- puts "# run: js2 config > js2.yml to create a config file"
110
- puts config.example_yml
111
- exit
112
- end
113
-
114
- processor = JS2::Util::Processor.new(config)
115
-
116
- if main_action == 'daemon'
117
- puts "running in daemon mode..."
118
- while 1
119
- res = processor.process!
120
- puts "Compiling #{Time.now}..." if res[:changed].any?
121
- sleep options.sleep_time
122
- end
123
- elsif main_action == 'compile'
124
- puts "compiling once! use daemon to monitor changes and compile automatically."
125
- res = processor.process!
126
- puts "Compiling #{Time.now}..." if res[:changed].any?
127
- elsif main_action == 'rdoc'
128
- res = processor.process!
129
- JS2::Util::Rdoc.build(res[:pages], config.file_handler, options.rdoc_bin)
12
+ JS2::Command.new(ARGV).cli
130
13
  end
data/bin/js2-ruby ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ dir = File.expand_path('../../lib/', __FILE__)
4
+ dir = File.directory?(dir) ? (dir + '/') : ''
5
+
6
+ require "#{dir}js2"
7
+ if (ARGV[0] == 'run')
8
+ file = ARGV[1]
9
+ c = JS2::Context.new
10
+ c.eval(File.read(file))
11
+ else
12
+ JS2::Command.new(ARGV).cli
13
+ end
@@ -0,0 +1,16 @@
1
+ require 'optparse'
2
+
3
+ module JS2
4
+ class Command
5
+ DEFAULT_INTERVAL = 3
6
+ def initialize(argv)
7
+ @ctx = JS2::Context.new
8
+ @ctx['JS2']['FS'] = JS2::FS.new(@ctx)
9
+ @ctx['argv'] = argv
10
+ end
11
+
12
+ def cli
13
+ @ctx.eval("new JS2.Commander(argv).cli()")
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,35 @@
1
+ module JS2
2
+ class Console
3
+ def log(*str)
4
+ puts str.join(',')
5
+ end
6
+ end
7
+
8
+ class Context
9
+ def initialize
10
+ @ctx = JS2::Engine.new
11
+ @ctx['JS2_RUBY_FILE_ADAPTER'] = FS.new
12
+ @ctx['console'] = Console.new
13
+ @ctx.eval(File.read(File.dirname(__FILE__) + '/js2.js'))
14
+ @js2 = @ctx['JS2']
15
+ end
16
+
17
+ def []= (k,v)
18
+ @ctx[k] = v
19
+ end
20
+
21
+ def [] (k)
22
+ @ctx[k]
23
+ end
24
+
25
+
26
+ def render(str)
27
+ @js2.render(str)
28
+ end
29
+
30
+ def eval(str)
31
+ @ctx.eval(render(str))
32
+ end
33
+
34
+ end
35
+ end
data/lib/js2/fs.rb ADDED
@@ -0,0 +1,56 @@
1
+ require 'fileutils'
2
+ class JS2::FS
3
+ def read(file)
4
+ File.read(file)
5
+ end
6
+
7
+ def find(dir, ext, recursive)
8
+ lookup = recursive ? "**" : "."
9
+ return Dir["#{lookup}/*.#{ext}"].collect { |f| File.expand_path(f) }.reject { |f| f.match(/^\./) }
10
+ end
11
+
12
+
13
+ def expandPath(file)
14
+ return File.expand_path(file)
15
+ end
16
+
17
+ def isDirectory(dir)
18
+ return File.directory?(dir)
19
+ end
20
+
21
+ def dirname(file)
22
+ return File.dirname(file)
23
+ end
24
+
25
+ def readdir(file)
26
+ return Dir.entries(file).reject { |f| f.match(/^\.\.?/) }
27
+ end
28
+
29
+
30
+ def mkdir(file)
31
+ dir = File.dirname(file)
32
+ FileUtils.mkdir(dir) unless File.directory?(dir)
33
+ end
34
+
35
+ def isFile(dir)
36
+ return false unless dir
37
+ return File.file?(dir)
38
+ end
39
+
40
+ def write(out, data)
41
+ File.open(out, 'w') { |f| f << data }
42
+ end
43
+
44
+ def mtime(file)
45
+ File.stat(file).mtime.to_i
46
+ rescue
47
+ return 0
48
+ end
49
+
50
+ def setInterval(code, time)
51
+ while true
52
+ @ctx.eval(code)
53
+ sleep(time/1000)
54
+ end
55
+ end
56
+ end