diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-03 21:20:37 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-03 21:20:37 -0800 |
commit | 2ca177afb55232ae762051d9a2cc205629000e70 (patch) | |
tree | f4f1a2e134e77340a3542c86912a59ab1fbdf7c6 /scalatexApi/src/main/scala/scalatex/ScalatexParser.scala | |
parent | d229249c8805fdb0eb3536500a6ac8e42e15bd40 (diff) | |
download | hands-on-scala-js-2ca177afb55232ae762051d9a2cc205629000e70.tar.gz hands-on-scala-js-2ca177afb55232ae762051d9a2cc205629000e70.tar.bz2 hands-on-scala-js-2ca177afb55232ae762051d9a2cc205629000e70.zip |
It compiles with the old stuff stripped out
Diffstat (limited to 'scalatexApi/src/main/scala/scalatex/ScalatexParser.scala')
-rw-r--r-- | scalatexApi/src/main/scala/scalatex/ScalatexParser.scala | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/scalatexApi/src/main/scala/scalatex/ScalatexParser.scala b/scalatexApi/src/main/scala/scalatex/ScalatexParser.scala index 02f1cf5..a36d2d8 100644 --- a/scalatexApi/src/main/scala/scalatex/ScalatexParser.scala +++ b/scalatexApi/src/main/scala/scalatex/ScalatexParser.scala @@ -9,14 +9,15 @@ trait Ast{ object Ast{ case class Block(parts: Seq[Block.Sub], offset: Int = 0) extends Chain.Sub object Block{ - trait Sub + trait Sub extends Ast case class Text(txt: String, offset: Int = 0) extends Block.Sub } - case class Code(code: String, offset: Int = 0) - case class Chain(lhs: Code, parts: Seq[Chain.Sub], offset: Int = 0) extends Block.Sub + + case class Chain(lhs: String, parts: Seq[Chain.Sub], offset: Int = 0) extends Block.Sub object Chain{ - trait Sub + trait Sub extends Ast case class Prop(str: String, offset: Int = 0) extends Sub + case class TypeArgs(str: String, offset: Int = 0) extends Sub case class Args(str: String, offset: Int = 0) extends Sub } } @@ -42,7 +43,7 @@ class ScalatexParser(input: ParserInput, indent: Int = 0) extends ScalaSyntax(in } def Text = TextNot("@") def Code = rule { - "@" ~ capture(Id | BlockExpr | ('(' ~ optional(Exprs) ~ ')')) ~> (Ast.Code(_)) + "@" ~ capture(Id | BlockExpr2 | ('(' ~ optional(Exprs) ~ ')')) } def BlankLine = rule{ '\n' ~ zeroOrMore(' ') ~ &('\n') } def Indent = rule{ '\n' ~ indent.times(' ') ~ zeroOrMore(' ') } @@ -62,7 +63,8 @@ class ScalatexParser(input: ParserInput, indent: Int = 0) extends ScalaSyntax(in Code ~ zeroOrMore(Extension) ~> {Ast.Chain(_, _)} } def Extension: Rule1[Ast.Chain.Sub] = rule { - (capture(('.' ~ Id) ~ optional(TypeArgs2)) ~> (Ast.Chain.Prop(_))) | + (capture('.' ~ Id) ~> (Ast.Chain.Prop(_))) | + (capture(TypeArgs2) ~> (Ast.Chain.TypeArgs(_))) | (capture(ArgumentExprs2) ~> (Ast.Chain.Args(_))) | TBlock } @@ -72,6 +74,7 @@ class ScalatexParser(input: ParserInput, indent: Int = 0) extends ScalaSyntax(in def ArgumentExprs2 = rule { '(' ~ Ws ~ (optional(Exprs ~ ',' ~ Ws) ~ PostfixExpr ~ ':' ~ Ws ~ '_' ~ Ws ~ '*' ~ Ws | optional(Exprs)) ~ ')' } + def BlockExpr2: Rule0 = rule { '{' ~ Ws ~ (CaseClauses | Block) ~ '}' } def TBlock = rule{ '{' ~ Body ~ '}' } def Body = rule{ |