mochiscript 0.6.11 → 0.6.12
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/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
|