aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Rudolph <johannes.rudolph@gmail.com>2014-07-08 15:04:56 +0200
committerJohannes Rudolph <johannes.rudolph@gmail.com>2014-07-08 15:04:56 +0200
commit79587ca29b48b9c62dfbcaa6ad3318f623e156a6 (patch)
tree5ad79320581b4cf173148b01ebe8bf90ff512bc5
parent9bb3201a21d0a761646bfcd2bf95db06e2857ab7 (diff)
downloadsbt-boilerplate-79587ca29b48b9c62dfbcaa6ad3318f623e156a6.tar.gz
sbt-boilerplate-79587ca29b48b9c62dfbcaa6ad3318f623e156a6.tar.bz2
sbt-boilerplate-79587ca29b48b9c62dfbcaa6ad3318f623e156a6.zip
centralize place to define the default separator
-rw-r--r--src/main/scala/spray/boilerplate/TemplateParser.scala7
-rw-r--r--src/test/scala/spray/boilerplate/TemplateParserSpecs.scala10
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"))
}
}
}