diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-03 20:35:53 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-03 20:35:53 -0800 |
commit | d229249c8805fdb0eb3536500a6ac8e42e15bd40 (patch) | |
tree | 4fdac580f0b05ecfaac5245b00896c836c52eb92 /scalatexApi/src/main/scala | |
parent | 974c6e4f232ee9d47187898966e0887a119a0aba (diff) | |
download | hands-on-scala-js-d229249c8805fdb0eb3536500a6ac8e42e15bd40.tar.gz hands-on-scala-js-d229249c8805fdb0eb3536500a6ac8e42e15bd40.tar.bz2 hands-on-scala-js-d229249c8805fdb0eb3536500a6ac8e42e15bd40.zip |
whitespace/newlines inside Scala blocks work correctly
Diffstat (limited to 'scalatexApi/src/main/scala')
-rw-r--r-- | scalatexApi/src/main/scala/scalatex/ScalatexParser.scala | 11 | ||||
-rw-r--r-- | scalatexApi/src/main/scala/torimatomeru/ScalaSyntax.scala | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/scalatexApi/src/main/scala/scalatex/ScalatexParser.scala b/scalatexApi/src/main/scala/scalatex/ScalatexParser.scala index dc7bf06..02f1cf5 100644 --- a/scalatexApi/src/main/scala/scalatex/ScalatexParser.scala +++ b/scalatexApi/src/main/scala/scalatex/ScalatexParser.scala @@ -62,11 +62,18 @@ 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(TypeArgs)) ~> (Ast.Chain.Prop(_))) | - (capture(!BlockExpr ~ ArgumentExprs) ~> (Ast.Chain.Args(_))) | + (capture(('.' ~ Id) ~ optional(TypeArgs2)) ~> (Ast.Chain.Prop(_))) | + (capture(ArgumentExprs2) ~> (Ast.Chain.Args(_))) | TBlock } + def Ws = Whitespace + // clones of the version in ScalaSyntax, but without tailing whitespace or newlines + def TypeArgs2 = rule { '[' ~ Ws ~ Types ~ ']' } + def ArgumentExprs2 = rule { + '(' ~ Ws ~ (optional(Exprs ~ ',' ~ Ws) ~ PostfixExpr ~ ':' ~ Ws ~ '_' ~ Ws ~ '*' ~ Ws | optional(Exprs)) ~ ')' + } def TBlock = rule{ '{' ~ Body ~ '}' } + def Body = rule{ zeroOrMore( LoneScalaChain | diff --git a/scalatexApi/src/main/scala/torimatomeru/ScalaSyntax.scala b/scalatexApi/src/main/scala/torimatomeru/ScalaSyntax.scala index 5bbd0af..4b94033 100644 --- a/scalatexApi/src/main/scala/torimatomeru/ScalaSyntax.scala +++ b/scalatexApi/src/main/scala/torimatomeru/ScalaSyntax.scala @@ -6,7 +6,7 @@ import org.parboiled2._ class ScalaSyntax(val input: ParserInput) extends Parser with Basic with Identifiers with Literals { - def Whitespace = rule { zeroOrMore(WhitespaceChar | Comment) } + def Whitespace = rule { zeroOrMore(WhitespaceChar | Comment | Newline) } /** * Every token handles space at the end. |