mochiscript 0.6.11 → 0.6.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -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><LBRACE><VAR> <IDENT>(?:**:**<IDENT>)? in (.*?)**<RBRACE>**");
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
- namespace = tokens.iterator++;
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
- // TODO ugly, revisit this later
1124
- tokens.consume(m[0].length-1);
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;
@@ -1,3 +1,3 @@
1
1
  module Mochiscript
2
- VERSION = "0.6.11"
2
+ VERSION = "0.6.12"
3
3
  end
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.11
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-05 00:00:00.000000000 Z
12
+ date: 2012-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: therubyracer