js2 0.3.2 → 0.3.3
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.
- data/CHANGELOG +3 -0
- data/lib/js2/js2.js +34 -17
- metadata +18 -7
data/CHANGELOG
ADDED
data/lib/js2/js2.js
CHANGED
@@ -123,14 +123,18 @@ function mainFunction (arg) {
|
|
123
123
|
var oo = klass.oo;
|
124
124
|
proto.oo = oo;
|
125
125
|
|
126
|
-
for (var name in klassDef) {
|
127
|
-
oo.addMember(name, klassDef[name]);
|
128
|
-
}
|
129
|
-
|
130
126
|
for (var name in this) {
|
131
127
|
oo.addStaticMember(name, this[name]);
|
132
128
|
}
|
133
129
|
|
130
|
+
if (typeof klassDef == 'function') {
|
131
|
+
klassDef(klass, oo);
|
132
|
+
} else {
|
133
|
+
for (var name in klassDef) {
|
134
|
+
oo.addMember(name, klassDef[name]);
|
135
|
+
}
|
136
|
+
}
|
137
|
+
|
134
138
|
return klass;
|
135
139
|
};
|
136
140
|
|
@@ -155,6 +159,7 @@ function mainFunction (arg) {
|
|
155
159
|
[ 'SPACE', "\\s+" ],
|
156
160
|
[ 'REGEX', "\\/" ],
|
157
161
|
[ 'CLASS', "class" ],
|
162
|
+
[ 'STATIC', "static" ],
|
158
163
|
[ 'SHORT_FUNCT', "#\\{|#\\(" ],
|
159
164
|
[ 'FOREACH', "foreach" ],
|
160
165
|
[ 'CURRY', "curry" ],
|
@@ -534,7 +539,7 @@ function mainFunction (arg) {
|
|
534
539
|
}
|
535
540
|
};
|
536
541
|
|
537
|
-
var KEYWORDS = { 'var': null, 'class': null, 'function': null, 'in': null, 'with': null, 'curry': null};
|
542
|
+
var KEYWORDS = { 'var': null, 'class': null, 'function': null, 'in': null, 'with': null, 'curry': null, 'static': null };
|
538
543
|
var IDS = JS2.Lexer.IDS;
|
539
544
|
IDS['NODE'] = -1;
|
540
545
|
|
@@ -702,6 +707,7 @@ function mainFunction (arg) {
|
|
702
707
|
switch (token[0]) {
|
703
708
|
case 'var': return Member;
|
704
709
|
case 'function': return Method;
|
710
|
+
case 'static': return StaticMember;
|
705
711
|
}
|
706
712
|
},
|
707
713
|
|
@@ -713,8 +719,27 @@ function mainFunction (arg) {
|
|
713
719
|
|
714
720
|
toString: function() {
|
715
721
|
var str = this.$super();
|
716
|
-
return str.replace(/,(
|
717
|
-
}
|
722
|
+
return str.replace(/^{/, 'function(KLASS, OO){').replace(/}$/, "}");
|
723
|
+
}
|
724
|
+
});
|
725
|
+
|
726
|
+
var StaticMember = Content.extend({
|
727
|
+
name: 'StaticMember',
|
728
|
+
handOff: function(token) {
|
729
|
+
if (this.started) this.closed = true;
|
730
|
+
|
731
|
+
switch (token[0]) {
|
732
|
+
case 'var': this.started = true; return Member;
|
733
|
+
case 'function': this.started = true; return Method;
|
734
|
+
}
|
735
|
+
},
|
736
|
+
|
737
|
+
toString: function() {
|
738
|
+
var member = this.handOffs[0];
|
739
|
+
if (!member) return '';
|
740
|
+
var ret = member.toString();
|
741
|
+
return ret.replace(/addMember/, 'addStaticMember');
|
742
|
+
}
|
718
743
|
});
|
719
744
|
|
720
745
|
var Method = Content.extend({
|
@@ -731,7 +756,7 @@ function mainFunction (arg) {
|
|
731
756
|
|
732
757
|
toString: function () {
|
733
758
|
var v = this.validate(/^(function)(\s+)(I)(\s*)(Braces)(\s*)(Block)/);
|
734
|
-
return v[3] + '
|
759
|
+
return 'OO.addMember("' + v[3] + '",' + "function" + v[2] + v[5] + ' ' + v[7] + ');';
|
735
760
|
}
|
736
761
|
});
|
737
762
|
|
@@ -746,12 +771,10 @@ function mainFunction (arg) {
|
|
746
771
|
var last = v.last.replace(/;$/, '');
|
747
772
|
if (last.length == 0) last = 'null';
|
748
773
|
|
749
|
-
return '"' + v[3] + '"
|
774
|
+
return 'OO.addMember("' + v[3] + '",' + last + ');';
|
750
775
|
}
|
751
776
|
});
|
752
777
|
|
753
|
-
|
754
|
-
|
755
778
|
var Braces = Content.extend({
|
756
779
|
name: 'Braces',
|
757
780
|
handleToken: function(token) {
|
@@ -950,7 +973,6 @@ JS2.Array.prototype.any = function() {
|
|
950
973
|
return this.length > 0;
|
951
974
|
};
|
952
975
|
|
953
|
-
|
954
976
|
JS2.Class.extend('FileSystem', {
|
955
977
|
initialize:function (adapter) {
|
956
978
|
this.adapter = adapter;
|
@@ -1060,7 +1082,6 @@ JS2.Class.extend('FileSystem', {
|
|
1060
1082
|
}
|
1061
1083
|
});
|
1062
1084
|
|
1063
|
-
|
1064
1085
|
JS2.Class.extend('Updater', {
|
1065
1086
|
initialize:function (fs, inDir, outDir, recursive) {
|
1066
1087
|
this.recursive = recursive;
|
@@ -1105,7 +1126,6 @@ JS2.Class.extend('Updater', {
|
|
1105
1126
|
}
|
1106
1127
|
});
|
1107
1128
|
|
1108
|
-
|
1109
1129
|
JS2.Class.extend('Config', {
|
1110
1130
|
"CLI_REGEX":/^-(r|i|f)(=(\w+))$/,
|
1111
1131
|
"optsLookup":{
|
@@ -1168,7 +1188,6 @@ JS2.Class.extend('Config', {
|
|
1168
1188
|
|
1169
1189
|
});
|
1170
1190
|
|
1171
|
-
|
1172
1191
|
JS2.Class.extend('Commander', {
|
1173
1192
|
"BANNER":"js2 <command> [options] <arguments>\n" +
|
1174
1193
|
"Commands:\n" +
|
@@ -1251,7 +1270,6 @@ JS2.Class.extend('Commander', {
|
|
1251
1270
|
});
|
1252
1271
|
|
1253
1272
|
|
1254
|
-
|
1255
1273
|
JS2.Class.extend('BrowserDecorator', {
|
1256
1274
|
file:function (code) {
|
1257
1275
|
return code;
|
@@ -1285,7 +1303,6 @@ JS2.Class.extend('RingoDecorator', {
|
|
1285
1303
|
JS2.DECORATOR = JS2.DECORATOR || new JS2.BrowserDecorator();
|
1286
1304
|
|
1287
1305
|
|
1288
|
-
|
1289
1306
|
JS2.fs = new JS2.FileSystem(JS2_RUBY_FILE_ADAPTER);
|
1290
1307
|
js2.DECORATOR = new JS2.BrowserDecorator();
|
1291
1308
|
js2.ROOT = root;
|
metadata
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: js2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 3
|
8
|
+
- 3
|
9
|
+
version: 0.3.3
|
6
10
|
platform: ruby
|
7
11
|
authors:
|
8
12
|
- Jeff Su
|
@@ -10,7 +14,7 @@ autorequire:
|
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
16
|
|
13
|
-
date: 2011-03-09 00:00:00
|
17
|
+
date: 2011-03-09 00:00:00 -08:00
|
14
18
|
default_executable:
|
15
19
|
dependencies:
|
16
20
|
- !ruby/object:Gem::Dependency
|
@@ -21,6 +25,8 @@ dependencies:
|
|
21
25
|
requirements:
|
22
26
|
- - ">="
|
23
27
|
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
24
30
|
version: "0"
|
25
31
|
type: :runtime
|
26
32
|
version_requirements: *id001
|
@@ -36,12 +42,13 @@ extra_rdoc_files: []
|
|
36
42
|
files:
|
37
43
|
- bin/js2
|
38
44
|
- bin/js2-ruby
|
39
|
-
- lib/js2.rb
|
40
|
-
- lib/js2/context.rb
|
41
|
-
- lib/js2/rack.rb
|
42
45
|
- lib/js2/command.rb
|
46
|
+
- lib/js2/context.rb
|
43
47
|
- lib/js2/fs.rb
|
48
|
+
- lib/js2/rack.rb
|
49
|
+
- lib/js2.rb
|
44
50
|
- lib/js2/js2.js
|
51
|
+
- CHANGELOG
|
45
52
|
has_rdoc: true
|
46
53
|
homepage: http://jeffsu.github.com/js2
|
47
54
|
licenses: []
|
@@ -56,17 +63,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
56
63
|
requirements:
|
57
64
|
- - ">="
|
58
65
|
- !ruby/object:Gem::Version
|
66
|
+
segments:
|
67
|
+
- 0
|
59
68
|
version: "0"
|
60
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
70
|
none: false
|
62
71
|
requirements:
|
63
72
|
- - ">="
|
64
73
|
- !ruby/object:Gem::Version
|
74
|
+
segments:
|
75
|
+
- 0
|
65
76
|
version: "0"
|
66
77
|
requirements: []
|
67
78
|
|
68
79
|
rubyforge_project:
|
69
|
-
rubygems_version: 1.
|
80
|
+
rubygems_version: 1.3.7
|
70
81
|
signing_key:
|
71
82
|
specification_version: 3
|
72
83
|
summary: Javascript Syntactic Sugar
|