aboutsummaryrefslogblamecommitdiff
path: root/src/main/scala/spray/boilerplate/Generator.scala
blob: ca0e10487c8fb098e13b8f6e649bc63a6f5166f3 (plain) (tree)
1
2
3
4
5
6
7
8
9





                                                                                                  
                         
 
                                           

                  


                                                                     



                                                                            

                                            

   
/*
 * 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) => (1 to idx).map(generate(inner)).mkString(sep)
    case Offset(i) => (idx + i - 1).toString
    case LiteralString(lit) => lit
  }
}