From b5b95c7d83b376c74a43848715228dfd3a415354 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Wed, 8 Oct 2014 21:32:56 -0700 Subject: 0.2.2 --- src/main/scala/workbench/Plugin.scala | 11 ++++++++++- src/main/scala/workbench/Server.scala | 5 ++++- 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/scala/workbench/Plugin.scala b/src/main/scala/workbench/Plugin.scala index 85b8f39..3a1b175 100644 --- a/src/main/scala/workbench/Plugin.scala +++ b/src/main/scala/workbench/Plugin.scala @@ -80,7 +80,16 @@ object Plugin extends sbt.Plugin { var s = IO.read(new sbt.File(path.drop(prefix.length))) s = s.replace("\nvar ScalaJS = ", "\nvar ScalaJS = ScalaJS || ") - s = s.replaceAll("\n(ScalaJS\\.c\\.[a-zA-Z_$0-9]+\\.prototype) = ", "/*X*/\n$1 = $1 || ") + s = s.replaceAll( + "\n(ScalaJS\\.c\\.[a-zA-Z_$0-9]+\\.prototype) = (.*?\n)", + """ + |$1 = $1 || {} + |(function(){ + | var newProto = $2 + | for (var attrname in newProto) { $1[attrname] = newProto[attrname]; } + |})() + |""".stripMargin + ) for(char <- Seq("d", "c", "h", "i", "n", "m")){ s = s.replaceAll("\n(ScalaJS\\." + char + "\\.[a-zA-Z_$0-9]+) = ", "\n$1 = $1 || ") } diff --git a/src/main/scala/workbench/Server.scala b/src/main/scala/workbench/Server.scala index 8d05037..3ffe288 100644 --- a/src/main/scala/workbench/Server.scala +++ b/src/main/scala/workbench/Server.scala @@ -56,15 +56,18 @@ class Server(url: String, port: Int, bootSnippet: String) extends SimpleRoutingA // Even if there's someone already waiting, // a new actor waiting replaces the old one waitingActor = Some(a) - case (a: ActorRef, None, msgs) => + case (a: ActorRef, None, msgs) => respond(a, upickle.json.write(Js.Arr(msgs:_*))) queuedMessages = Nil + case (msg: Js.Arr, None, msgs) => queuedMessages = msg :: msgs + case (msg: Js.Arr, Some(a), Nil) => respond(a, upickle.json.write(Js.Arr(msg))) waitingActor = None + case (Clear, waiting, Nil) => waiting.foreach(respond(_, upickle.json.write(Js.Arr()))) waitingActor = None -- cgit v1.2.3