js2 0.3.18 → 0.3.19

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 (4) hide show
  1. data/CHANGELOG +3 -0
  2. data/lib/js2/browser.js +3 -1
  3. data/lib/js2/js2.js +28 -3
  4. metadata +6 -6
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ 0.3.19
2
+ * SYNTAX: added private closure block support "private { var foo = 'bar' }" within classes
3
+
1
4
  0.3.18
2
5
  * COMMAND: updaters should be using targetDir instead of outDir
3
6
  * JSML: fixed empty space problem
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.18";
22
+ js2.VERSION = "0.3.19";
23
23
 
24
24
  JS2.ROOT = JS2;
25
25
 
@@ -269,6 +269,7 @@ JS2.Array.prototype.any = function() {
269
269
  return this.length > 0;
270
270
  };
271
271
 
272
+
272
273
  JS2.Class.extend('JSML', function(KLASS, OO){
273
274
  OO.addStaticMember("process",function (txt) {
274
275
  return new KLASS(txt);
@@ -469,6 +470,7 @@ JS2.Class.extend('JSMLElement', function(KLASS, OO){
469
470
  });
470
471
  });
471
472
 
473
+
472
474
  JS2.TEMPLATES = { jsml: JS2.JSML };
473
475
 
474
476
 
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.18";
17
+ js2.VERSION = "0.3.19";
18
18
 
19
19
  JS2.ROOT = JS2;
20
20
 
@@ -601,7 +601,7 @@ function mainFunction (arg) {
601
601
  }
602
602
  };
603
603
 
604
- var KEYWORDS = { 'var': null, 'class': null, 'function': null, 'in': null, 'with': null, 'curry': null, 'static': null, 'module':null };
604
+ var KEYWORDS = { 'var': null, 'class': null, 'function': null, 'in': null, 'with': null, 'curry': null, 'static': null, 'module':null, 'private':null };
605
605
  var IDS = JS2.Lexer.IDS;
606
606
  IDS['NODE'] = -1;
607
607
 
@@ -778,9 +778,26 @@ function mainFunction (arg) {
778
778
  if (this.tokens.isBalancedCurly(this) && token[0] == '}') {
779
779
  this.closed = true;
780
780
  }
781
- }
781
+ }
782
+ });
783
+
784
+ var Private = Content.extend({
785
+ name: 'Private',
786
+ handOff: function(token) {
787
+ if (this.started) this.closed = true;
788
+ switch (token[0]) {
789
+ case '{': this.started = true; return Block;
790
+ }
791
+ },
792
+
793
+ toString: function() {
794
+ var v = this.validate(/(private)(\s+)/);
795
+ var last = v.last;
796
+ return "// private closure\n" + last.replace(/^\{/, '').replace(/\}$/, '');
797
+ }
782
798
  });
783
799
 
800
+
784
801
  var KlassBlock = Block.extend({
785
802
  name: 'KlassBlock',
786
803
  handOff: function(token) {
@@ -789,6 +806,7 @@ function mainFunction (arg) {
789
806
  case 'function': return Method;
790
807
  case 'static': return StaticMember;
791
808
  case 'include': return Include;
809
+ case 'private': return Private;
792
810
  }
793
811
  },
794
812
 
@@ -1124,6 +1142,7 @@ JS2.Array.prototype.any = function() {
1124
1142
  return this.length > 0;
1125
1143
  };
1126
1144
 
1145
+
1127
1146
  JS2.Class.extend('FileSystem', function(KLASS, OO){
1128
1147
  OO.addMember("initialize",function (adapter) {
1129
1148
  this.adapter = adapter;
@@ -1233,6 +1252,7 @@ JS2.Class.extend('FileSystem', function(KLASS, OO){
1233
1252
  });
1234
1253
  });
1235
1254
 
1255
+
1236
1256
  JS2.Class.extend('Updater', function(KLASS, OO){
1237
1257
  OO.addMember("initialize",function (fs, inDir, outDir, recursive) {
1238
1258
  this.recursive = recursive;
@@ -1278,6 +1298,7 @@ JS2.Class.extend('Updater', function(KLASS, OO){
1278
1298
  });
1279
1299
  });
1280
1300
 
1301
+
1281
1302
  JS2.Class.extend('Config', function(KLASS, OO){
1282
1303
  OO.addMember("CLI_REGEX",/^-(r|i|f|n|v|m)(=(\w+))?$/);
1283
1304
  OO.addMember("optsLookup",{
@@ -1349,6 +1370,7 @@ JS2.Class.extend('Config', function(KLASS, OO){
1349
1370
 
1350
1371
  });
1351
1372
 
1373
+
1352
1374
  JS2.Class.extend('Commander', function(KLASS, OO){
1353
1375
  OO.addMember("BANNER","js2 <command> [options] <arguments>\n" +
1354
1376
  "VERSION: " + JS2.VERSION + "\n" +
@@ -1435,6 +1457,7 @@ JS2.Class.extend('Commander', function(KLASS, OO){
1435
1457
  });
1436
1458
 
1437
1459
 
1460
+
1438
1461
  JS2.Class.extend('BrowserDecorator', function(KLASS, OO){
1439
1462
  OO.addMember("file",function (code) {
1440
1463
  return code;
@@ -1479,6 +1502,7 @@ JS2.Class.extend('RingoDecorator', function(KLASS, OO){
1479
1502
 
1480
1503
  JS2.DECORATOR = JS2.DECORATOR || new JS2.BrowserDecorator();
1481
1504
 
1505
+
1482
1506
  JS2.Class.extend('JSML', function(KLASS, OO){
1483
1507
  OO.addStaticMember("process",function (txt) {
1484
1508
  return new KLASS(txt);
@@ -1678,6 +1702,7 @@ JS2.Class.extend('JSMLElement', function(KLASS, OO){
1678
1702
  return (out.length ? ' ' : '') + out.join(' ');
1679
1703
  });
1680
1704
  });
1705
+
1681
1706
  JS2.TEMPLATES = { jsml: JS2.JSML };
1682
1707
 
1683
1708
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: js2
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.18
5
+ version: 0.3.19
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-04-16 00:00:00 +08:00
13
+ date: 2011-07-02 00:00:00 +08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -36,11 +36,11 @@ extra_rdoc_files: []
36
36
  files:
37
37
  - bin/js2
38
38
  - bin/js2-ruby
39
- - lib/js2.rb
40
- - lib/js2/context.rb
41
- - lib/js2/rack.rb
42
39
  - lib/js2/command.rb
40
+ - lib/js2/context.rb
43
41
  - lib/js2/fs.rb
42
+ - lib/js2/rack.rb
43
+ - lib/js2.rb
44
44
  - lib/js2/browser.js
45
45
  - lib/js2/js2.js
46
46
  - CHANGELOG
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
68
  requirements: []
69
69
 
70
70
  rubyforge_project:
71
- rubygems_version: 1.5.2
71
+ rubygems_version: 1.6.2
72
72
  signing_key:
73
73
  specification_version: 3
74
74
  summary: Javascript Sugar