/* * 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 formatNum0(num: Int) = num.formatted("%d") def formatNumSpace(num: Int) = num.formatted("%d") def replaceInPattern(pattern: String)(idx: Int): String = // in likely identifiers replace by '04' etc. pattern.replaceAll("(?<=\\w)(? els.map(e => generate(e)(idx)).mkString case Expand(inner, sep) => (1 to idx).map(generate(inner)).mkString(sep) case LiteralString(lit) => replaceInPattern(lit)(idx) case FixedString(lit) => lit } }