aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/spray/boilerplate/Generator.scala
blob: db2feb9b76de654baf1785348f077852073329ad (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
 * 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

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
  }
}