aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/cc/spray/boilerplate/TemplateParser.scala
diff options
context:
space:
mode:
authorJohannes Rudolph <johannes_rudolph@gmx.de>2012-10-16 14:24:54 +0200
committerJohannes Rudolph <johannes_rudolph@gmx.de>2012-10-16 14:24:54 +0200
commit3dc171e41676e9043fe0c6d935b97a944c143dad (patch)
treed4a9a441eef5502567f79270e136b2bde7e99ea1 /src/main/scala/cc/spray/boilerplate/TemplateParser.scala
parentcbbca47a06609e4c523dfbf8498d4f0552f2aa20 (diff)
downloadsbt-boilerplate-3dc171e41676e9043fe0c6d935b97a944c143dad.tar.gz
sbt-boilerplate-3dc171e41676e9043fe0c6d935b97a944c143dad.tar.bz2
sbt-boilerplate-3dc171e41676e9043fe0c6d935b97a944c143dad.zip
move from "cc.spray" to "io.spray"
Diffstat (limited to 'src/main/scala/cc/spray/boilerplate/TemplateParser.scala')
-rw-r--r--src/main/scala/cc/spray/boilerplate/TemplateParser.scala56
1 files changed, 0 insertions, 56 deletions
diff --git a/src/main/scala/cc/spray/boilerplate/TemplateParser.scala b/src/main/scala/cc/spray/boilerplate/TemplateParser.scala
deleted file mode 100644
index dfaddd7..0000000
--- a/src/main/scala/cc/spray/boilerplate/TemplateParser.scala
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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 cc.spray.boilerplate
-
-import util.parsing.combinator.RegexParsers
-import java.lang.RuntimeException
-
-sealed trait TemplateElement
-case class Sequence(elements: Seq[TemplateElement]) extends TemplateElement
-case class LiteralString(literal: String) extends TemplateElement
-case class FixedString(literal: String) extends TemplateElement
-case class Expand(inner: TemplateElement, separator: String) extends TemplateElement
-
-object TemplateParser extends RegexParsers {
- override type Elem = Char
- type Tokens = TemplateElement
- override val skipWhitespace = false
-
- def elements: Parser[TemplateElement] = rep1(element) ^^ {
- case one :: Nil => one
- case several => Sequence(several)
- }
-
- def element: Parser[TemplateElement] = literal | fixed | expand
-
- def literalChar: Parser[String] = """(?s:(?!\[#)(?!#[^\]]*\]).)""".r
- def literalChars: Parser[String] = rep1(literalChar) ^^ { _.reduceLeft(_ + _) }
-
- def literal: Parser[LiteralString] = literalChars ^^ LiteralString
-
- def fixed: Parser[FixedString] = "##" ~> ".".r ^^ (new String(_)) ^^ FixedString
-
- def expand: Parser[Expand] = "[#" ~> elements ~ "#" ~ separatorChars <~ "]" ^^ {
- case els ~ x ~ sep => Expand(els, sep.getOrElse(", "))
- }
-
- def separatorChars: Parser[Option[String]] = rep("""[^\]]""".r) ^^ (_.reduceLeftOption(_ + _))
-
- def parse(input:String): TemplateElement =
- phrase(elements)(new scala.util.parsing.input.CharArrayReader(input.toCharArray)) match {
- case Success(res,_) => res
- case x:NoSuccess => throw new RuntimeException(x.msg)
- }
-}
-
-object TestParser extends App {
- def check(format: String) {
- println(TemplateParser.parse(format))
- }
-
- check("[#abc ##1 # ++ ]")
-} \ No newline at end of file