From 79587ca29b48b9c62dfbcaa6ad3318f623e156a6 Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Tue, 8 Jul 2014 15:04:56 +0200 Subject: centralize place to define the default separator --- src/main/scala/spray/boilerplate/TemplateParser.scala | 7 +++++-- src/test/scala/spray/boilerplate/TemplateParserSpecs.scala | 10 +++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/scala/spray/boilerplate/TemplateParser.scala b/src/main/scala/spray/boilerplate/TemplateParser.scala index 408e551..6d8e22d 100644 --- a/src/main/scala/spray/boilerplate/TemplateParser.scala +++ b/src/main/scala/spray/boilerplate/TemplateParser.scala @@ -20,7 +20,10 @@ case class LiteralString(literal: String) extends TemplateElement /* An offset to be replaced by the current index */ case class Offset(i: Int) extends TemplateElement /** A region in which to apply expansions */ -case class Expand(inner: TemplateElement, separator: String) extends TemplateElement +case class Expand(inner: TemplateElement, separator: String = Expand.defaultSeparator) extends TemplateElement +object Expand { + val defaultSeparator = ", " +} object TemplateParser extends RegexParsers { override type Elem = Char @@ -42,7 +45,7 @@ object TemplateParser extends RegexParsers { def outsideTemplate: Parser[LiteralString] = """(?s).+?(?=(\[#)|(\z))""".r ^^ (LiteralString(_)) def expand: Parser[Expand] = "[#" ~> elements ~ "#" ~ separatorChars <~ "]" ^^ { - case els ~ x ~ sep ⇒ Expand(els, sep.getOrElse(", ")) + case els ~ x ~ sep ⇒ Expand(els, sep.getOrElse(Expand.defaultSeparator)) } def outsideElements: Parser[TemplateElement] = rep1(expand | outsideTemplate) ^^ maybeSequence diff --git a/src/test/scala/spray/boilerplate/TemplateParserSpecs.scala b/src/test/scala/spray/boilerplate/TemplateParserSpecs.scala index 1e5e844..85b99af 100644 --- a/src/test/scala/spray/boilerplate/TemplateParserSpecs.scala +++ b/src/test/scala/spray/boilerplate/TemplateParserSpecs.scala @@ -10,20 +10,20 @@ class TemplateParserSpecs extends Specification { parse("abc") === LiteralString("abc") } "just expansion" in { - parse("[# def #]") === Expand(LiteralString(" def "), ", ") + parse("[# def #]") === Expand(LiteralString(" def ")) } "multiple expansions" in { parse("[#a#]abc[#b#]") === - Expand(LiteralString("a"), ", ") ~ LiteralString("abc") ~ Expand(LiteralString("b"), ", ") + Expand(LiteralString("a")) ~ LiteralString("abc") ~ Expand(LiteralString("b")) } "one surrounded expansion" in { - parse("abc[#a#]def") === LiteralString("abc") ~ Expand(LiteralString("a"), ", ") ~ LiteralString("def") + parse("abc[#a#]def") === LiteralString("abc") ~ Expand(LiteralString("a")) ~ LiteralString("def") } "an expanded number" in { - parse("[#T1#]") === Expand(LiteralString("T") ~ Offset(1), ", ") + parse("[#T1#]") === Expand(LiteralString("T") ~ Offset(1)) } "a quoted number" in { - parse("[#T##1#]") === Expand(LiteralString("T1"), ", ") + parse("[#T##1#]") === Expand(LiteralString("T1")) } } } -- cgit v1.2.3