aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Rudolph <johannes.rudolph@gmail.com>2014-07-08 15:57:16 +0200
committerJohannes Rudolph <johannes.rudolph@gmail.com>2014-07-08 15:57:16 +0200
commitaed51e8962105a4163e38b2b2ba5651e57c468cb (patch)
tree065c47741bb4d02cb87a68c40d4036714cf814df
parentdf2ad7c83b8cc1ef00e1e0fc446121879057d77d (diff)
downloadsbt-boilerplate-aed51e8962105a4163e38b2b2ba5651e57c468cb.tar.gz
sbt-boilerplate-aed51e8962105a4163e38b2b2ba5651e57c468cb.tar.bz2
sbt-boilerplate-aed51e8962105a4163e38b2b2ba5651e57c468cb.zip
adapt outside parser to latest changes
-rw-r--r--src/main/scala/spray/boilerplate/TemplateParser.scala5
-rw-r--r--src/test/scala/spray/boilerplate/TemplateParserSpecs.scala6
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)))
}
}
}