mochiscript 0.6.11 → 0.6.12
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mochiscript/core.rb +50 -7
- data/lib/mochiscript/version.rb +1 -1
- metadata +2 -2
data/lib/mochiscript/core.rb
CHANGED
@@ -724,6 +724,7 @@ RootParser.extend("ClassParser", function(KLASS, OO){
|
|
724
724
|
});
|
725
725
|
});
|
726
726
|
|
727
|
+
|
727
728
|
RootParser.extend("ModuleParser", function(KLASS, OO){
|
728
729
|
|
729
730
|
var REGEX = Tokens.regex("<MODULE> <CLASSNAME><LCURLY>");
|
@@ -775,6 +776,39 @@ RootParser.extend("CurlyParser", function(KLASS, OO){
|
|
775
776
|
|
776
777
|
var CurlyParser = $c.CurlyParser;
|
777
778
|
|
779
|
+
RootParser.extend("BraceParser", function(KLASS, OO){
|
780
|
+
OO.addMember("_TYPE", 'BraceParser');
|
781
|
+
|
782
|
+
OO.addMember("initialize", function(chop){var self=this;
|
783
|
+
this.chop = chop;
|
784
|
+
this.$super();
|
785
|
+
});
|
786
|
+
|
787
|
+
OO.addMember("handleToken", function(token, tokens){var self=this;
|
788
|
+
if (this.brace === undefined) this.brace = 0;
|
789
|
+
if (token[0] == TYPES.LBRACE) {
|
790
|
+
this.brace--;
|
791
|
+
} else if (token[0] == TYPES.RBRACE) {
|
792
|
+
this.brace++;
|
793
|
+
}
|
794
|
+
|
795
|
+
this.$super(token, tokens);
|
796
|
+
|
797
|
+
if (this.brace == 0) {
|
798
|
+
this.finished = true;
|
799
|
+
}
|
800
|
+
});
|
801
|
+
|
802
|
+
OO.addMember("endParse", function(tokens){var self=this;
|
803
|
+
if (this.chop) {
|
804
|
+
this.out.pop();
|
805
|
+
this.out.shift();
|
806
|
+
}
|
807
|
+
});
|
808
|
+
});
|
809
|
+
|
810
|
+
var BraceParser = $c.BraceParser;
|
811
|
+
|
778
812
|
CurlyParser.extend("ClassContentParser", function(KLASS, OO){
|
779
813
|
OO.addMember("getHandler", function(token){var self=this;
|
780
814
|
switch(token[0]) {
|
@@ -1109,19 +1143,28 @@ CurlyParser.extend("ForeachParser", function(KLASS, OO){
|
|
1109
1143
|
OO.addMember("_TYPE", 'Foreach');
|
1110
1144
|
|
1111
1145
|
|
1112
|
-
var REGEX = Tokens.regex("<FOREACH
|
1146
|
+
var REGEX = Tokens.regex("(<FOREACH>\\s*)<LBRACE>");
|
1147
|
+
var REGEX_INNER = Tokens.regex("<LBRACE><VAR> <IDENT>(?:**:**<IDENT>)?\\s+in\\s+(.*)<RBRACE>");
|
1113
1148
|
|
1114
1149
|
|
1115
1150
|
OO.addMember("startParse", function(tokens){var self=this;
|
1116
1151
|
var m = tokens.match(REGEX);
|
1117
|
-
|
1152
|
+
if (!m) return false;
|
1153
|
+
tokens.consume(m[0].length-1);
|
1118
1154
|
|
1119
|
-
this.item = m[4];
|
1120
|
-
this.iterator = m[5] || "_i_" + namespace;
|
1121
|
-
this.list = m[6];
|
1122
1155
|
|
1123
|
-
|
1124
|
-
|
1156
|
+
var content = new $c.BraceParser();
|
1157
|
+
content.parse(tokens);
|
1158
|
+
|
1159
|
+
var mInner = content.toString().match(REGEX_INNER);
|
1160
|
+
if (!mInner) return false;
|
1161
|
+
|
1162
|
+
var namespace = tokens.iterator++;
|
1163
|
+
|
1164
|
+
this.item = mInner[3];
|
1165
|
+
this.iterator = mInner[4] || "_i_" + namespace;
|
1166
|
+
this.list = mInner[5];
|
1167
|
+
|
1125
1168
|
var declare = [ this.iterator + "=0", this.item + "=null", "_list_" + namespace + "=" + this.list, "_len_" + namespace + "=_list_" + namespace + ".length" ].join(',');
|
1126
1169
|
|
1127
1170
|
var bool = "(" + this.item + "=" + "_list_" + namespace + "[" + this.iterator + "])||" + this.iterator + "<_len_" + namespace;
|
data/lib/mochiscript/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mochiscript
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-09-
|
12
|
+
date: 2012-09-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: therubyracer
|