From 364d49d4b4a2bf347df0642c62d3c66fd9ac8eee Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Fri, 6 Jul 2012 10:28:51 -0400 Subject: [PATCH] Translate `show x y` into `;show x ;show y` . fixes #495 --- main/Act.scala | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/main/Act.scala b/main/Act.scala index cb10b8909..e764d0b82 100644 --- a/main/Act.scala +++ b/main/Act.scala @@ -226,10 +226,17 @@ object Act { val extracted = Project extract state import extracted.{showKey, structure} + import Aggregation.evaluatingParser showParser.flatMap { show => - aggregatedKeyParser(extracted) flatMap { kvs => - Aggregation.evaluatingParser(state, structure, show)( keyValues(structure)(kvs) ) - } + val akp = aggregatedKeyParser(extracted) + def evaluate(kvs: Seq[ScopedKey[T]] forSome { type T}): Parser[() => State] = evaluatingParser(state, structure, show)( keyValues(structure)(kvs) ) + def reconstruct(arg: String): String = ShowCommand + " " + arg + if(show) + ( akp ~ (token(Space) ~> matched(akp)).* ) flatMap { case (kvs, tail) => + evaluate(kvs) map { f => () => tail.map(reconstruct) ::: f() } + } + else + akp flatMap evaluate } } def showParser = token( (ShowCommand ~ Space) ^^^ true) ?? false