diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-11-05 06:37:03 -0800 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-11-05 06:37:03 -0800 |
commit | 8e8f9bb1d2e05d946ba55e273027d05345057d4d (patch) | |
tree | cfdb80268a283aac1bc91ee54c55cf302ce55a4f /scalatexApi/src/main/scala/scalatex/stages/Compiler.scala | |
parent | a99ca0a1c4df83638d888d316a453b6516477a08 (diff) | |
download | hands-on-scala-js-8e8f9bb1d2e05d946ba55e273027d05345057d4d.tar.gz hands-on-scala-js-8e8f9bb1d2e05d946ba55e273027d05345057d4d.tar.bz2 hands-on-scala-js-8e8f9bb1d2e05d946ba55e273027d05345057d4d.zip |
If-elses-fors work and are tested
Diffstat (limited to 'scalatexApi/src/main/scala/scalatex/stages/Compiler.scala')
-rw-r--r-- | scalatexApi/src/main/scala/scalatex/stages/Compiler.scala | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/scalatexApi/src/main/scala/scalatex/stages/Compiler.scala b/scalatexApi/src/main/scala/scalatex/stages/Compiler.scala index 8bb203a..7d1492c 100644 --- a/scalatexApi/src/main/scala/scalatex/stages/Compiler.scala +++ b/scalatexApi/src/main/scala/scalatex/stages/Compiler.scala @@ -38,6 +38,17 @@ object Compiler{ case Ast.Block.Text(str, _) => q"$str" case Ast.Chain(code, parts, offset) => compileChain(code, parts, offset) case Ast.Header(header, block, offset) => compileHeader(header, block, offset) + case b @ Ast.Block.IfElse(condString, Ast.Block(parts2, offset2), elseBlock, offset) => + println("AST " + b) + val If(cond, _, _) = c.parse(condString + "{}") + val elseCompiled = elseBlock match{ + case Some(Ast.Block(parts3, offset3)) => wrapBlock(compileBlock(parts3, offset3)) + case None => EmptyTree + } + + val res = If(cond, wrapBlock(compileBlock(parts2, offset2)), elseCompiled) + println("Tree " + res) + res case Ast.Block.For(generators, Ast.Block(parts2, offset2), offset) => val fresh = c.fresh() @@ -48,7 +59,7 @@ object Compiler{ val a2 = Apply(fun, List(f2)) a2 case Ident(x: TermName) if x.decoded == fresh => - q"Seq[$fragType](..${compileBlock(parts2, offset2)})" + wrapBlock(compileBlock(parts2, offset2)) } val out = rec(tree) |