From 979b4fed86b57852fd50affa78c67255713eac48 Mon Sep 17 00:00:00 2001 From: Jeff Su Date: Wed, 5 Sep 2012 15:05:50 -0700 Subject: [PATCH] trailing foreaches --- platforms/gem/lib/mochiscript/core.rb | 4 ++-- platforms/npm/lib/mochiscript/mochiscript.js | 4 ++-- src/parsers.ms | 4 ++-- tests/trailing-foreach.ms | 5 +++++ 4 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 tests/trailing-foreach.ms diff --git a/platforms/gem/lib/mochiscript/core.rb b/platforms/gem/lib/mochiscript/core.rb index d095165..4d73b04 100644 --- a/platforms/gem/lib/mochiscript/core.rb +++ b/platforms/gem/lib/mochiscript/core.rb @@ -921,7 +921,7 @@ class Parser OO.addMember("parse", function(tokens){var self=this; - var beginning = tokens.match(/^<<(\w+)(?::(\w+))?(.*?)\n/); + var beginning = tokens.match(/^<<(\w+)(?::(\w+))?(.*?)?\n/); var terminator = beginning[1]; tokens.consume(beginning[0].length); @@ -1108,7 +1108,7 @@ class Parser OO.addMember("_TYPE", 'Foreach'); - var REGEX = Tokens.regex(" (?:**:**)? in (.*?)****{"); + var REGEX = Tokens.regex(" (?:**:**)? in (.*?)****"); OO.addMember("startParse", function(tokens){var self=this; diff --git a/platforms/npm/lib/mochiscript/mochiscript.js b/platforms/npm/lib/mochiscript/mochiscript.js index 31ca598..b508eaf 100644 --- a/platforms/npm/lib/mochiscript/mochiscript.js +++ b/platforms/npm/lib/mochiscript/mochiscript.js @@ -908,7 +908,7 @@ RootParser.extend("HereDocParser", function(KLASS, OO){ OO.addMember("parse", function(tokens){var self=this; - var beginning = tokens.match(/^<<(\w+)(?::(\w+))?(.*?)\n/); + var beginning = tokens.match(/^<<(\w+)(?::(\w+))?(.*?)?\n/); var terminator = beginning[1]; tokens.consume(beginning[0].length); @@ -1095,7 +1095,7 @@ CurlyParser.extend("ForeachParser", function(KLASS, OO){ OO.addMember("_TYPE", 'Foreach'); - var REGEX = Tokens.regex(" (?:**:**)? in (.*?)****{"); + var REGEX = Tokens.regex(" (?:**:**)? in (.*?)****"); OO.addMember("startParse", function(tokens){var self=this; diff --git a/src/parsers.ms b/src/parsers.ms index 1546d63..610a3ed 100644 --- a/src/parsers.ms +++ b/src/parsers.ms @@ -361,7 +361,7 @@ class HereDocParser extends RootParser { } function parse(tokens) { - var beginning = tokens.match(/^<<(\w+)(?::(\w+))?(.*?)\n/); + var beginning = tokens.match(/^<<(\w+)(?::(\w+))?(.*?)?\n/); var terminator = beginning[1]; tokens.consume(beginning[0].length); @@ -548,7 +548,7 @@ class ForeachParser extends CurlyParser { var _TYPE = 'Foreach'; private { - var REGEX = Tokens.regex(" (?:**:**)? in (.*?)****{"); + var REGEX = Tokens.regex(" (?:**:**)? in (.*?)****"); } function startParse(tokens) { diff --git a/tests/trailing-foreach.ms b/tests/trailing-foreach.ms new file mode 100644 index 0000000..5977ba6 --- /dev/null +++ b/tests/trailing-foreach.ms @@ -0,0 +1,5 @@ +var list = [ 'hello', 'world', 'foo', 'bar', null, {}, false, 'bar2' ]; + +foreach (var item in list) container = item; + +$m.test(#{ $1.eq(container, 'bar2') });