From aed51e8962105a4163e38b2b2ba5651e57c468cb Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Tue, 8 Jul 2014 15:57:16 +0200 Subject: adapt outside parser to latest changes --- src/main/scala/spray/boilerplate/TemplateParser.scala | 5 +++-- src/test/scala/spray/boilerplate/TemplateParserSpecs.scala | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/scala/spray/boilerplate/TemplateParser.scala b/src/main/scala/spray/boilerplate/TemplateParser.scala index 8808bc8..2d186c7 100644 --- a/src/main/scala/spray/boilerplate/TemplateParser.scala +++ b/src/main/scala/spray/boilerplate/TemplateParser.scala @@ -48,7 +48,8 @@ object TemplateParser extends RegexParsers { def escapedLiteralNumber: Parser[Char] = "##" ~> offsetChars ^^ (_.head) - def outsideTemplate: Parser[LiteralString] = """(?s).+?(?=(\[#)|(\z))""".r ^^ (LiteralString(_)) + def outsideLiteralString: Parser[LiteralString] = rep1(outsideLiteralChar) ^^ (chs ⇒ LiteralString(chs.mkString)) + def outsideLiteralChar: Parser[Char] = not(expandStart | """#[^\]]*\]""".r) ~> elem("Any character", _ ⇒ true) def expand: Parser[Expand] = expandStart ~ elements ~ "#" ~ separatorChars <~ "]" ^^ { case range ~ els ~ x ~ sep ⇒ Expand(els, sep.getOrElse(Expand.defaultSeparator), range) @@ -61,7 +62,7 @@ object TemplateParser extends RegexParsers { }) | success(Range()) def outsideElements: Parser[TemplateElement] = - rep1(expand | outsideTemplate) ^^ maybeSequence + rep1(expand | outsideLiteralString) ^^ maybeSequence def separatorChars: Parser[Option[String]] = rep("""[^\]]""".r) ^^ (_.reduceLeftOption(_ + _)) diff --git a/src/test/scala/spray/boilerplate/TemplateParserSpecs.scala b/src/test/scala/spray/boilerplate/TemplateParserSpecs.scala index fbf6ee2..f1205ff 100644 --- a/src/test/scala/spray/boilerplate/TemplateParserSpecs.scala +++ b/src/test/scala/spray/boilerplate/TemplateParserSpecs.scala @@ -26,7 +26,11 @@ class TemplateParserSpecs extends Specification { parse("[#T##1#]") === Expand(LiteralString("T1")) } "custom range" in { - parse("[0..11#T1#]") === Expand(LiteralString("T") ~ Offset(1), range = Range(start = Some(0), end = Some(11))) + parse("[0..14#T1#]") === Expand(LiteralString("T") ~ Offset(1), range = Range(start = Some(0), end = Some(14))) + } + "prefix, custom range, and separator" in { + parse("abc[0..14#T1#\n]") === + LiteralString("abc") ~ Expand(LiteralString("T") ~ Offset(1), separator = "\n", range = Range(start = Some(0), end = Some(14))) } } } -- cgit v1.2.3