js2 0.3.18 → 0.3.19

Sign up to get free protection for your applications and to get access to all the features.
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