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.
@@ -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