blob: 5576f56dd7226338afa74481f42417bd3f237ee4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/*
* sbt-boilerplate is distributed under the 2-Clause BSD license. See the LICENSE file in the root
* of the repository.
*
* Copyright (c) 2012 Johannes Rudolph
*/
package spray.boilerplate
import util.parsing.combinator.RegexParsers
object Generator {
def generateFromTemplate(template: String, expandTo: Int): String =
generate(TemplateParser.parse(template))(expandTo)
def generate(format: TemplateElement)(idx: Int): String = format match {
case Sequence(els @ _*) ⇒ els.map(e ⇒ generate(e)(idx)).mkString
case Expand(inner, sep, range) ⇒ (range.start.getOrElse(1) to range.end.getOrElse(idx)).map(generate(inner)).mkString(sep)
case Offset(i) ⇒ (idx + i - 1).toString
case LiteralString(lit) ⇒ lit
}
}
|