diff options
author | Li Haoyi <haoyi@dropbox.com> | 2014-10-08 21:32:56 -0700 |
---|---|---|
committer | Li Haoyi <haoyi@dropbox.com> | 2014-10-08 21:32:56 -0700 |
commit | b5b95c7d83b376c74a43848715228dfd3a415354 (patch) | |
tree | 56d3755bbef582127601160d2a43541f57fdd5bd /src/main | |
parent | a57376f40b539260f1d13d3278f10e16a4a2fbe1 (diff) | |
download | workbench-b5b95c7d83b376c74a43848715228dfd3a415354.tar.gz workbench-b5b95c7d83b376c74a43848715228dfd3a415354.tar.bz2 workbench-b5b95c7d83b376c74a43848715228dfd3a415354.zip |
0.2.2
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/scala/workbench/Plugin.scala | 11 | ||||
-rw-r--r-- | src/main/scala/workbench/Server.scala | 5 |
2 files changed, 14 insertions, 2 deletions
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 |