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