js2 0.3.9 → 0.3.12

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,18 @@
1
+ 0.3.12
2
+ * fixed parse error in JSMLElement
3
+ * Yanking 0.3.11
4
+
5
+ 0.3.11
6
+ * fixed minor issue finding Rails.root in rack
7
+ * Yanking 0.3.10
8
+
9
+ 0.3.10
10
+ * fixed foreach boolean
11
+ * fixed https://github.com/jeffsu/js2/issues#issue/1
12
+ * Rack to try and use Rails.root otherwise, use cwd
13
+ * put boundaries in lexer for js2 keywords
14
+ * made regex/divide solution more robust
15
+
1
16
  0.3.9
2
17
  * fixed regex/divide issue
3
18
 
data/lib/js2/browser.js CHANGED
@@ -19,7 +19,7 @@ function mainFunction (arg) {
19
19
 
20
20
  var JS2 = root.JS2 = mainFunction;
21
21
  var js2 = root.js2 = JS2;
22
- js2.VERSION = "0.3.9";
22
+ js2.VERSION = "0.3.12";
23
23
 
24
24
  JS2.ROOT = JS2;
25
25
 
@@ -168,7 +168,7 @@ function mainFunction (arg) {
168
168
 
169
169
  var assert = {
170
170
  'eq': function(expected, actual) { if (expected != actual) console.log("Expected "+expected+", but got "+actual+".") },
171
- 'isFalse': function(val) { if (val) console.log("Expected false, but got "+val+".") },
171
+ 'isFalse': function(val) { if (val) console.log("Expected false, but got "+JSON.stringify(val)+".") },
172
172
  'isTrue': function(val) { if (!val) console.log("Expected true, but got " +val+".") }
173
173
  };
174
174
 
data/lib/js2/js2.js CHANGED
@@ -14,7 +14,7 @@ function mainFunction (arg) {
14
14
 
15
15
  var JS2 = root.JS2 = mainFunction;
16
16
  var js2 = root.js2 = JS2;
17
- js2.VERSION = "0.3.9";
17
+ js2.VERSION = "0.3.12";
18
18
 
19
19
  JS2.ROOT = JS2;
20
20
 
@@ -162,7 +162,7 @@ function mainFunction (arg) {
162
162
 
163
163
  var assert = {
164
164
  'eq': function(expected, actual) { if (expected != actual) console.log("Expected "+expected+", but got "+actual+".") },
165
- 'isFalse': function(val) { if (val) console.log("Expected false, but got "+val+".") },
165
+ 'isFalse': function(val) { if (val) console.log("Expected false, but got "+JSON.stringify(val)+".") },
166
166
  'isTrue': function(val) { if (!val) console.log("Expected true, but got " +val+".") }
167
167
  };
168
168
 
@@ -180,19 +180,19 @@ function mainFunction (arg) {
180
180
  [ 'COMMENT', "\\/\\/|/\\*" ],
181
181
  [ 'SPACE', "\\s+" ],
182
182
  [ 'REGEX', "\\/" ],
183
- [ 'CLASS', "class" ],
184
- [ 'MODULE', "module" ],
185
- [ 'STATIC', "static" ],
186
- [ 'include', "include" ],
183
+ [ 'CLASS', "\\bclass\\b" ],
184
+ [ 'MODULE', "\\bmodule\\b" ],
185
+ [ 'STATIC', "\\bstatic\\b" ],
186
+ [ 'include', "\\binclude\\b" ],
187
187
  [ 'SHORT_FUNCT', "#\\{|#\\(" ],
188
- [ 'FOREACH', "foreach" ],
189
- [ 'CURRY', "curry" ],
188
+ [ 'FOREACH', "\\bforeach\\b" ],
189
+ [ 'CURRY', "\\bcurry\\b" ],
190
190
  [ 'IDENT', "[\\w$]+" ],
191
191
  [ 'DSTRING', '"' ],
192
192
  [ 'SSTRING', "'" ],
193
193
  [ 'ISTRING', "%\\{" ],
194
194
  [ 'HEREDOC', "<<-?\\w+" ],
195
- [ 'OPERATOR', "[^\\w]" ]
195
+ [ 'OPERATOR', "(?:\\+\\+|\\-\\-|[^\\w])" ]
196
196
  ];
197
197
 
198
198
  var IDS = {};
@@ -343,7 +343,7 @@ function mainFunction (arg) {
343
343
 
344
344
  JS2.Lexer.ISTRING.extend('Lexer.HEREDOC', {
345
345
  REGEX_NEXT: /^((\\#|[^#])*?)(#{|\r?\n)/,
346
- REGEX: /^<<\-?(\w+)\r?\n/m,
346
+ REGEX: /^<<\-?(\w+)(?::(\w+))?\s*\r?\n/m,
347
347
  ID: IDS.HEREDOC,
348
348
  consume: function() {
349
349
  var m = this.tokens.match(this.REGEX);
@@ -376,10 +376,13 @@ function mainFunction (arg) {
376
376
 
377
377
  var next = this.tokens.match(this.REGEX_NEXT);
378
378
  if (next) {
379
+ var str = next[1];
380
+ var ending = next[2];
381
+
379
382
  if (next[1]) {
380
383
  this.tokens.chomp(next[1].length);
381
384
  this.tokens.push([ (first ? '' : '+') + '"' + this.sanitize(next[1]) + '\\\\n"', IDS.DSTRING ]);
382
- }
385
+ }
383
386
 
384
387
  if (next[3] == '#{') {
385
388
  this.tokens.chomp(1);
@@ -474,7 +477,7 @@ function mainFunction (arg) {
474
477
 
475
478
  divideCompatible: function() {
476
479
  var last = this.lastNonSpace();
477
- return (last[0].match(/(\}|\))/) || last[1] == IDS.IDENT);
480
+ return (last[0].match(/(\}|\)|\+\+|\-\-)$/) || last[1] == IDS.IDENT);
478
481
  },
479
482
 
480
483
  lastNonSpace: function() {
@@ -1242,7 +1245,7 @@ JS2.Class.extend('Updater', function(KLASS, OO){
1242
1245
 
1243
1246
  OO.addMember("matchDirs",function (dir) {
1244
1247
  var subs = this.fs.readdir(dir);
1245
- for(var _i4=0,_c4=subs,_l4=_c4.length,sub;sub=_c4[_i4]||_i4<_l4;_i4++){
1248
+ for(var _i1=0,_c1=subs,_l1=_c1.length,sub;(sub=_c1[_i1])||(_i1<_l1);_i1++){
1246
1249
  var path = dir + '/' + sub;
1247
1250
  if (this.fs.isDirectory(path)) {
1248
1251
  this.fs.mkdir(path.replace(this.inDir, this.outDir));
@@ -1484,7 +1487,7 @@ JS2.Class.extend('JSML', function(KLASS, OO){
1484
1487
  this.current = this.root;
1485
1488
  this.stack = [ this.root ];
1486
1489
 
1487
- for(var _i4=0,_c4=lines,_l4=_c4.length,l;l=_c4[_i4]||_i4<_l4;_i4++){
1490
+ for(var _i1=0,_c1=lines,_l1=_c1.length,l;(l=_c1[_i1])||(_i1<_l1);_i1++){
1488
1491
  if (l.match(/^\s*$/)) continue;
1489
1492
  this.processLine(l);
1490
1493
  }
@@ -1525,6 +1528,39 @@ JS2.Class.extend('JSML', function(KLASS, OO){
1525
1528
  });
1526
1529
 
1527
1530
  JS2.Class.extend('JSMLElement', function(KLASS, OO){
1531
+ OO.addMember("SCOPE_REGEX",/(\s+)(.*)/);
1532
+ OO.addMember("TOKEN_REGEX",/^(%|#|\.)([\w-]+)/);
1533
+ OO.addMember("JS_REGEX",/^(-|=)(.*)$/);
1534
+
1535
+ OO.addMember("initialize",function (line) {
1536
+ var spaceMatch = line.match(this.SCOPE_REGEX);
1537
+ this.scope = spaceMatch[1].length / 2;
1538
+
1539
+ this.classes = [];
1540
+ this.nodeID = null;
1541
+
1542
+ this.parse(spaceMatch[2]);
1543
+ });
1544
+
1545
+ OO.addMember("parse",function (line) {
1546
+ var self = this;
1547
+ line = line.replace(this.TOKEN_REGEX, function(match, type, name){
1548
+ switch(type) {
1549
+ case '%': this.nodeType = name; break;
1550
+ case '#': this.classes.push(name); break;
1551
+ case '.': this.nodeID = name; break;
1552
+ }
1553
+ return '';
1554
+ });
1555
+
1556
+ line = line.replace(this.JS_OUT_REGEX, function(match, type, content){
1557
+ switch(type) {
1558
+ case '=': this.jsEQ = content; break;
1559
+ case '-': this.jsExec = content; break;
1560
+ }
1561
+ return '';
1562
+ });
1563
+ });
1528
1564
  });
1529
1565
 
1530
1566
 
data/lib/js2/rack.rb CHANGED
@@ -3,19 +3,24 @@ require 'yaml'
3
3
  module JS2
4
4
  # this is a hack for now until I can get v8 stable
5
5
  class Rack
6
- ROOT = File.expand_path(Dir.getwd)
7
-
8
- DEFAULT_CONFIG = {
9
- 'source_dir' => "#{ROOT}/app/js2",
10
- 'target_dir' => "#{ROOT}/public/javascripts",
11
- 'bin' => (`which js2`.chomp rescue nil),
12
- 'copy_js2' => true
13
- }
6
+ def get_root
7
+ @root ||= defined?(Rails) ? Rails.root : File.expand_path(Dir.getwd)
8
+ puts "ROOT:#{@root}"
9
+ return @root
10
+ end
14
11
 
15
12
  def initialize(app)
16
13
  @app = app
17
14
 
18
- config = YAML.load_file(ROOT + '/config/js2.yml') rescue DEFAULT_CONFIG
15
+ default = {
16
+ 'source_dir' => "#{get_root}/app/js2",
17
+ 'target_dir' => "#{get_root}/public/javascripts",
18
+ 'bin' => (`which js2`.chomp rescue nil),
19
+ 'copy_js2' => true
20
+ }
21
+
22
+
23
+ config = YAML.load_file(get_root + '/config/js2.yml') rescue default
19
24
 
20
25
  @source_dir = config['source_dir'] || './app/js2'
21
26
  @target_dir = config['target_dir'] || './public/javascripts'
@@ -31,9 +36,11 @@ module JS2
31
36
 
32
37
  def call(env)
33
38
  if @copy_js2
34
- to_file = ROOT + '/public/javascripts/js2.js'
39
+ to_file = "#{get_root}/public/javascripts/js2.js"
35
40
  unless File.exists?(to_file)
36
41
  from_file = JS2::ROOT + '/js2/browser.js'
42
+ puts "--- #{get_root}"
43
+ puts "#{from_file} #{to_file}"
37
44
  File.open(to_file, 'w') { |f| f << File.read(from_file) }
38
45
  end
39
46
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: js2
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.9
5
+ version: 0.3.12
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jeff Su
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-30 00:00:00 +08:00
13
+ date: 2011-03-31 00:00:00 +08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency