summaryrefslogtreecommitdiff
path: root/examples/crossBuilds
diff options
context:
space:
mode:
authorLi Haoyi <haoyi@dropbox.com>2014-11-09 23:11:06 -0800
committerLi Haoyi <haoyi@dropbox.com>2014-11-09 23:11:06 -0800
commitaaea4afbf3b47d623f396cb1eae247fa92053032 (patch)
treed462a508e545d5ec3637557b632cd0b7366e56cd /examples/crossBuilds
parent52306f10ce3d1e462b171688de04b37174c0b74a (diff)
downloadhands-on-scala-js-aaea4afbf3b47d623f396cb1eae247fa92053032.tar.gz
hands-on-scala-js-aaea4afbf3b47d623f396cb1eae247fa92053032.tar.bz2
hands-on-scala-js-aaea4afbf3b47d623f396cb1eae247fa92053032.zip
.
Diffstat (limited to 'examples/crossBuilds')
-rw-r--r--examples/crossBuilds/clientserver/build.sbt23
-rw-r--r--examples/crossBuilds/clientserver/client/shared/main/scala/simple/FileData.scala3
-rw-r--r--examples/crossBuilds/clientserver/client/src/main/scala/simple/Client.scala37
-rw-r--r--examples/crossBuilds/clientserver/js/shared/main/scala/simple/Simple.scala7
-rw-r--r--examples/crossBuilds/clientserver/js/shared/test/scala/simple/SimpleTest.scala13
-rw-r--r--examples/crossBuilds/clientserver/js/src/main/scala/simple/Platform.scala31
-rw-r--r--examples/crossBuilds/clientserver/jvm/shared/main/scala/simple/Simple.scala7
-rw-r--r--examples/crossBuilds/clientserver/jvm/shared/test/scala/simple/SimpleTest.scala13
-rw-r--r--examples/crossBuilds/clientserver/jvm/src/main/scala/simple/Platform.scala59
l---------examples/crossBuilds/clientserver/server/shared1
-rw-r--r--examples/crossBuilds/clientserver/server/src/main/scala/simple/Page.scala21
-rw-r--r--examples/crossBuilds/clientserver/server/src/main/scala/simple/Server.scala43
-rw-r--r--examples/crossBuilds/clientserver2/build.sbt28
-rw-r--r--examples/crossBuilds/clientserver2/js/shared/main/scala/simple/Simple.scala7
-rw-r--r--examples/crossBuilds/clientserver2/js/shared/test/scala/simple/SimpleTest.scala13
-rw-r--r--examples/crossBuilds/clientserver2/js/src/main/scala/simple/Platform.scala34
-rw-r--r--examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala7
-rw-r--r--examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala13
-rw-r--r--examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala61
-rw-r--r--examples/crossBuilds/clientserver2/project/build.sbt4
-rw-r--r--examples/crossBuilds/simple/js/shared/main/scala/simple/Simple.scala4
-rw-r--r--examples/crossBuilds/simple/js/src/main/scala/simple/Platform.scala6
-rw-r--r--examples/crossBuilds/simple/jvm/src/main/scala/simple/Platform.scala13
-rw-r--r--examples/crossBuilds/simple2/js/shared/main/scala/simple/Simple.scala4
-rw-r--r--examples/crossBuilds/simple2/js/shared/test/scala/simple/SimpleTest.scala15
-rw-r--r--examples/crossBuilds/simple2/js/src/main/scala/simple/Platform.scala2
-rw-r--r--examples/crossBuilds/simple2/jvm/src/main/scala/simple/Platform.scala9
27 files changed, 152 insertions, 326 deletions
diff --git a/examples/crossBuilds/clientserver/build.sbt b/examples/crossBuilds/clientserver/build.sbt
index 434fb42..618ac8a 100644
--- a/examples/crossBuilds/clientserver/build.sbt
+++ b/examples/crossBuilds/clientserver/build.sbt
@@ -1,25 +1,34 @@
import utest.jsrunner.JsCrossBuild
import scala.scalajs.sbtplugin.ScalaJSPlugin._
import ScalaJSKeys._
-
-val cross = new JsCrossBuild(
- // Shared settings here
+val sharedSettings = Seq(
+ unmanagedSourceDirectories in Compile +=
+ baseDirectory.value / "shared" / "main" / "scala",
+ libraryDependencies ++= Seq(
+ "com.scalatags" %%% "scalatags" % "0.4.2",
+ "com.lihaoyi" %%% "upickle" % "0.2.5"
+ )
)
-lazy val js = cross.js.settings(
+lazy val client = project.in(file("client"))
+ .settings(scalaJSSettings:_*)
+ .settings(sharedSettings:_*)
+ .settings(
libraryDependencies ++= Seq(
"org.scala-lang.modules.scalajs" %%% "scalajs-dom" % "0.6"
)
)
-lazy val jvm = cross.jvm.settings(
+lazy val server = project.in(file("server"))
+ .settings(sharedSettings:_*)
+ .settings(
libraryDependencies ++= Seq(
"io.spray" %% "spray-can" % "1.3.2",
"io.spray" %% "spray-routing" % "1.3.2",
"com.typesafe.akka" %% "akka-actor" % "2.3.6"
),
(resources in Compile) += {
- (fastOptJS in (js, Compile)).value
- (artifactPath in (js, Compile, fastOptJS)).value
+ (fastOptJS in (client, Compile)).value
+ (artifactPath in (client, Compile, fastOptJS)).value
}
)
diff --git a/examples/crossBuilds/clientserver/client/shared/main/scala/simple/FileData.scala b/examples/crossBuilds/clientserver/client/shared/main/scala/simple/FileData.scala
new file mode 100644
index 0000000..f3a23f9
--- /dev/null
+++ b/examples/crossBuilds/clientserver/client/shared/main/scala/simple/FileData.scala
@@ -0,0 +1,3 @@
+/*shared/main/scala/simple/Simple.scala*/
+package simple
+case class FileData(name: String, size: Long) \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver/client/src/main/scala/simple/Client.scala b/examples/crossBuilds/clientserver/client/src/main/scala/simple/Client.scala
new file mode 100644
index 0000000..f066923
--- /dev/null
+++ b/examples/crossBuilds/clientserver/client/src/main/scala/simple/Client.scala
@@ -0,0 +1,37 @@
+//js/src/main/scala/simple/Platform.scala
+package simple
+
+import scalatags.JsDom.all._
+import scala.scalajs.concurrent.JSExecutionContext.Implicits.runNow
+import org.scalajs.dom
+import dom.extensions.Ajax
+import scala.scalajs.js.annotation.JSExport
+
+@JSExport
+object Client extends{
+ @JSExport
+ def main(container: dom.HTMLDivElement) = {
+ val inputBox = input.render
+ val outputBox = ul.render
+ def update() = Ajax.post("/ajax", inputBox.value).foreach{ xhr =>
+ val data = upickle.read[Seq[FileData]](xhr.responseText)
+ outputBox.innerHTML = ""
+ for(FileData(name, size) <- data){
+ outputBox.appendChild(
+ li(
+ b(name), " - ", size, " bytes"
+ ).render
+ )
+ }
+ }
+ inputBox.onkeyup = (e: dom.Event) => update()
+ update()
+ container.appendChild(
+ div(
+ h1("File Search"),
+ inputBox,
+ outputBox
+ ).render
+ )
+ }
+} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver/js/shared/main/scala/simple/Simple.scala b/examples/crossBuilds/clientserver/js/shared/main/scala/simple/Simple.scala
deleted file mode 100644
index d3b0278..0000000
--- a/examples/crossBuilds/clientserver/js/shared/main/scala/simple/Simple.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-/*shared/main/scala/simple/Simple.scala*/
-package simple
-object Simple{
- def formatTimes(timestamps: Seq[Long]): String = {
- timestamps.map(Platform.format).mkString("\n")
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver/js/shared/test/scala/simple/SimpleTest.scala b/examples/crossBuilds/clientserver/js/shared/test/scala/simple/SimpleTest.scala
deleted file mode 100644
index ec6b29f..0000000
--- a/examples/crossBuilds/clientserver/js/shared/test/scala/simple/SimpleTest.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-/*js/shared/test/scala/simple/SimpleTest.scala*/
-/*jvm/shared/test/scala/simple/SimpleTest.scala*/
-package simple
-import utest._
-object SimpleTest extends TestSuite{
- val tests = TestSuite{
- 'format{
- 'nil - assert(Simple.formatTimes(Nil) == "")
- 'timeZero - assert(
- Simple.formatTimes(Seq(0)) == "December 31, 1969 4:00:00 PM PST")
- }
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver/js/src/main/scala/simple/Platform.scala b/examples/crossBuilds/clientserver/js/src/main/scala/simple/Platform.scala
deleted file mode 100644
index c82a112..0000000
--- a/examples/crossBuilds/clientserver/js/src/main/scala/simple/Platform.scala
+++ /dev/null
@@ -1,31 +0,0 @@
-//js/src/main/scala/simple/Platform.scala
-package simple
-
-import org.scalajs.dom.XMLHttpRequest
-
-import scala.scalajs.js
-import org.scalajs.dom
-
-import scala.scalajs.js.annotation.JSExport
-
-@JSExport
-object Platform extends{
- def format(ts: Long) = {
- new js.Date(ts).toLocaleString()
- }
- @JSExport
- def main(container: dom.HTMLDivElement) = {
- container.innerHTML +=
- "<h1>Hello from Scala.js!</h1>" +
- s"<p>${Simple.formatTimes(Seq(0, 1 << 30))}</p>"
-
- val xhr = new XMLHttpRequest()
- xhr.open("POST", "/formatDates")
- xhr.onload = (e: dom.Event) => {
- container.innerHTML +=
- "<h1>Hello from Ajax!</h1>" +
- s"<p>${xhr.responseText}</p>"
- }
- xhr.send(Seq(0, 1 << 30).mkString(","))
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver/jvm/shared/main/scala/simple/Simple.scala b/examples/crossBuilds/clientserver/jvm/shared/main/scala/simple/Simple.scala
deleted file mode 100644
index d3b0278..0000000
--- a/examples/crossBuilds/clientserver/jvm/shared/main/scala/simple/Simple.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-/*shared/main/scala/simple/Simple.scala*/
-package simple
-object Simple{
- def formatTimes(timestamps: Seq[Long]): String = {
- timestamps.map(Platform.format).mkString("\n")
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver/jvm/shared/test/scala/simple/SimpleTest.scala b/examples/crossBuilds/clientserver/jvm/shared/test/scala/simple/SimpleTest.scala
deleted file mode 100644
index ec6b29f..0000000
--- a/examples/crossBuilds/clientserver/jvm/shared/test/scala/simple/SimpleTest.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-/*js/shared/test/scala/simple/SimpleTest.scala*/
-/*jvm/shared/test/scala/simple/SimpleTest.scala*/
-package simple
-import utest._
-object SimpleTest extends TestSuite{
- val tests = TestSuite{
- 'format{
- 'nil - assert(Simple.formatTimes(Nil) == "")
- 'timeZero - assert(
- Simple.formatTimes(Seq(0)) == "December 31, 1969 4:00:00 PM PST")
- }
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver/jvm/src/main/scala/simple/Platform.scala b/examples/crossBuilds/clientserver/jvm/src/main/scala/simple/Platform.scala
deleted file mode 100644
index 61fdc58..0000000
--- a/examples/crossBuilds/clientserver/jvm/src/main/scala/simple/Platform.scala
+++ /dev/null
@@ -1,59 +0,0 @@
-//jvm/src/main/scala/simple/Platform.scala
-package simple
-
-import java.text.SimpleDateFormat
-
-import akka.actor.ActorSystem
-import spray.http.{HttpEntity, MediaTypes}
-import spray.routing.SimpleRoutingApp
-
-object Platform extends SimpleRoutingApp{
- def format(ts: Long) = {
- val fmt =
- "MMMM d, yyyy h:mm:ss aaa z"
- new SimpleDateFormat(fmt).format(
- new java.util.Date(ts)
- )
- }
-
- def main(args: Array[String]): Unit = {
- implicit val system = ActorSystem()
- startServer("localhost", port = 8080){
- get{
- pathSingleSlash{
- complete{
- val msg = Simple.formatTimes(Seq(0, 1 << 30))
- val boot =
- "Platform().main(document.getElementById('contents'))"
- HttpEntity(
- MediaTypes.`text/html`,
- s"""
- <html>
- <head>
- <script src="/js-fastopt.js"></script>
- </head>
- <body onload="$boot">
- <div id="contents">
- <h1>Hello from Scala-JVM!</h1>
- <p>$msg</p>
- </div>
- </body>
- </html>
- """
- )
- }
- } ~
- getFromResourceDirectory("")
- } ~
- post{
- path("formatDates"){
- extract(_.request.entity.asString) { e =>
- complete {
- Simple.formatTimes(e.split(",").map(_.toLong))
- }
- }
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver/server/shared b/examples/crossBuilds/clientserver/server/shared
new file mode 120000
index 0000000..f32be42
--- /dev/null
+++ b/examples/crossBuilds/clientserver/server/shared
@@ -0,0 +1 @@
+../client/shared \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver/server/src/main/scala/simple/Page.scala b/examples/crossBuilds/clientserver/server/src/main/scala/simple/Page.scala
new file mode 100644
index 0000000..ce6617c
--- /dev/null
+++ b/examples/crossBuilds/clientserver/server/src/main/scala/simple/Page.scala
@@ -0,0 +1,21 @@
+package simple
+import scalatags.Text.all._
+
+object Page{
+ val boot =
+ "Client().main(document.getElementById('contents'))"
+ val skeleton =
+ html(
+ head(
+ script(src:="/client-fastopt.js"),
+ link(
+ rel:="stylesheet",
+ href:="http://yui.yahooapis.com/pure/0.5.0/pure-min.css"
+ )
+ ),
+ body(
+ onload:=boot,
+ div(id:="contents")
+ )
+ )
+}
diff --git a/examples/crossBuilds/clientserver/server/src/main/scala/simple/Server.scala b/examples/crossBuilds/clientserver/server/src/main/scala/simple/Server.scala
new file mode 100644
index 0000000..6b2fea3
--- /dev/null
+++ b/examples/crossBuilds/clientserver/server/src/main/scala/simple/Server.scala
@@ -0,0 +1,43 @@
+package simple
+
+import akka.actor.ActorSystem
+import spray.http.{HttpEntity, MediaTypes}
+import spray.routing.SimpleRoutingApp
+
+object Server extends SimpleRoutingApp{
+
+ def main(args: Array[String]): Unit = {
+ implicit val system = ActorSystem()
+ startServer("localhost", port = 8080){
+ get{
+ pathSingleSlash{
+ complete{
+ HttpEntity(
+ MediaTypes.`text/html`,
+ Page.skeleton.render
+ )
+ }
+ } ~
+ getFromResourceDirectory("")
+ } ~
+ post{
+ path("ajax"){
+ extract(_.request.entity.asString) { e =>
+ complete {
+ val (dir, last) = e.splitAt(e.lastIndexOf("/") + 1)
+ val files =
+ Option(new java.io.File("./" + dir).listFiles())
+ .toSeq.flatten
+ upickle.write(
+ for{
+ f <- files
+ if f.getName.startsWith(last)
+ } yield FileData(f.getName, f.length())
+ )
+ }
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver2/build.sbt b/examples/crossBuilds/clientserver2/build.sbt
deleted file mode 100644
index 7e5bddb..0000000
--- a/examples/crossBuilds/clientserver2/build.sbt
+++ /dev/null
@@ -1,28 +0,0 @@
-import utest.jsrunner.JsCrossBuild
-import scala.scalajs.sbtplugin.ScalaJSPlugin._
-import ScalaJSKeys._
-
-val cross = new JsCrossBuild(
- libraryDependencies ++= Seq(
- "com.scalatags" %%% "scalatags" % "0.4.2",
- "com.lihaoyi" %%% "upickle" % "0.2.5"
- )
-)
-
-lazy val js = cross.js.settings(
- libraryDependencies ++= Seq(
- "org.scala-lang.modules.scalajs" %%% "scalajs-dom" % "0.6"
- )
-)
-
-lazy val jvm = cross.jvm.settings(
- libraryDependencies ++= Seq(
- "io.spray" %% "spray-can" % "1.3.2",
- "io.spray" %% "spray-routing" % "1.3.2",
- "com.typesafe.akka" %% "akka-actor" % "2.3.6"
- ),
- (resources in Compile) += {
- (fastOptJS in (js, Compile)).value
- (artifactPath in (js, Compile, fastOptJS)).value
- }
-)
diff --git a/examples/crossBuilds/clientserver2/js/shared/main/scala/simple/Simple.scala b/examples/crossBuilds/clientserver2/js/shared/main/scala/simple/Simple.scala
deleted file mode 100644
index d3b0278..0000000
--- a/examples/crossBuilds/clientserver2/js/shared/main/scala/simple/Simple.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-/*shared/main/scala/simple/Simple.scala*/
-package simple
-object Simple{
- def formatTimes(timestamps: Seq[Long]): String = {
- timestamps.map(Platform.format).mkString("\n")
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver2/js/shared/test/scala/simple/SimpleTest.scala b/examples/crossBuilds/clientserver2/js/shared/test/scala/simple/SimpleTest.scala
deleted file mode 100644
index ec6b29f..0000000
--- a/examples/crossBuilds/clientserver2/js/shared/test/scala/simple/SimpleTest.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-/*js/shared/test/scala/simple/SimpleTest.scala*/
-/*jvm/shared/test/scala/simple/SimpleTest.scala*/
-package simple
-import utest._
-object SimpleTest extends TestSuite{
- val tests = TestSuite{
- 'format{
- 'nil - assert(Simple.formatTimes(Nil) == "")
- 'timeZero - assert(
- Simple.formatTimes(Seq(0)) == "December 31, 1969 4:00:00 PM PST")
- }
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver2/js/src/main/scala/simple/Platform.scala b/examples/crossBuilds/clientserver2/js/src/main/scala/simple/Platform.scala
deleted file mode 100644
index 906329e..0000000
--- a/examples/crossBuilds/clientserver2/js/src/main/scala/simple/Platform.scala
+++ /dev/null
@@ -1,34 +0,0 @@
-//js/src/main/scala/simple/Platform.scala
-package simple
-
-import scala.scalajs.js
-import org.scalajs.dom
-import dom.extensions.Ajax
-import scala.scalajs.concurrent.JSExecutionContext.Implicits.runNow
-import scala.scalajs.js.annotation.JSExport
-import scalatags.JsDom.all._
-@JSExport
-object Platform extends{
- def format(ts: Long) = {
- new js.Date(ts).toLocaleString()
- }
- @JSExport
- def main(container: dom.HTMLDivElement) = {
- container.appendChild(
- div(
- h1("Hello from Scala.js!"),
- p(Simple.formatTimes(Seq(0, 1 << 30)))
- ).render
- )
- val payload = upickle.write(Seq(0L, 1L << 30))
- Ajax.post("/formatDates", payload).foreach{ xhr =>
- container.appendChild(
- div(
- h1("Hello from Ajax!"),
- p(xhr.responseText)
- ).render
- )
- }
-
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala b/examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala
deleted file mode 100644
index d3b0278..0000000
--- a/examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala
+++ /dev/null
@@ -1,7 +0,0 @@
-/*shared/main/scala/simple/Simple.scala*/
-package simple
-object Simple{
- def formatTimes(timestamps: Seq[Long]): String = {
- timestamps.map(Platform.format).mkString("\n")
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala b/examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala
deleted file mode 100644
index ec6b29f..0000000
--- a/examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-/*js/shared/test/scala/simple/SimpleTest.scala*/
-/*jvm/shared/test/scala/simple/SimpleTest.scala*/
-package simple
-import utest._
-object SimpleTest extends TestSuite{
- val tests = TestSuite{
- 'format{
- 'nil - assert(Simple.formatTimes(Nil) == "")
- 'timeZero - assert(
- Simple.formatTimes(Seq(0)) == "December 31, 1969 4:00:00 PM PST")
- }
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala b/examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala
deleted file mode 100644
index f4ef986..0000000
--- a/examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala
+++ /dev/null
@@ -1,61 +0,0 @@
-//jvm/src/main/scala/simple/Platform.scala
-package simple
-
-import java.text.SimpleDateFormat
-import akka.actor.ActorSystem
-import spray.http.{HttpEntity, MediaTypes}
-import spray.routing.SimpleRoutingApp
-import scalatags.Text.all._
-
-object Static{
- val msg = Simple.formatTimes(Seq(0, 1 << 30))
- val boot =
- "Platform().main(document.getElementById('contents'))"
- val page = html(
- head(
- script(src:="/js-fastopt.js")
- ),
- body(
- onload:=boot,
- div(id:="contents")(
- h1("Hello from Scala-JVM!"),
- p(msg)
- )
- )
- )
-}
-object Platform extends SimpleRoutingApp{
- def format(ts: Long) = {
- val fmt =
- "MMMM d, yyyy h:mm:ss aaa z"
- new SimpleDateFormat(fmt).format(
- new java.util.Date(ts)
- )
- }
-
- def main(args: Array[String]): Unit = {
- implicit val system = ActorSystem()
- startServer("localhost", port = 8080){
- get{
- pathSingleSlash{
- complete{
- HttpEntity(
- MediaTypes.`text/html`,
- Static.page.render
- )
- }
- } ~
- getFromResourceDirectory("")
- } ~
- post{
- path("formatDates"){
- extract(_.request.entity.asString) { e =>
- complete {
- Simple.formatTimes(upickle.read[Seq[Long]](e))
- }
- }
- }
- }
- }
- }
-} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver2/project/build.sbt b/examples/crossBuilds/clientserver2/project/build.sbt
deleted file mode 100644
index 5bd83ce..0000000
--- a/examples/crossBuilds/clientserver2/project/build.sbt
+++ /dev/null
@@ -1,4 +0,0 @@
-/*project/build.sbt*/
-addSbtPlugin("org.scala-lang.modules.scalajs" % "scalajs-sbt-plugin" % "0.5.5")
-
-addSbtPlugin("com.lihaoyi" % "utest-js-plugin" % "0.2.4") \ No newline at end of file
diff --git a/examples/crossBuilds/simple/js/shared/main/scala/simple/Simple.scala b/examples/crossBuilds/simple/js/shared/main/scala/simple/Simple.scala
index d3b0278..4ed0285 100644
--- a/examples/crossBuilds/simple/js/shared/main/scala/simple/Simple.scala
+++ b/examples/crossBuilds/simple/js/shared/main/scala/simple/Simple.scala
@@ -1,7 +1,7 @@
/*shared/main/scala/simple/Simple.scala*/
package simple
object Simple{
- def formatTimes(timestamps: Seq[Long]): String = {
- timestamps.map(Platform.format).mkString("\n")
+ def formatTimes(timestamps: Seq[Long]): Seq[String] = {
+ timestamps.map(Platform.format).map(_.dropRight(5))
}
} \ No newline at end of file
diff --git a/examples/crossBuilds/simple/js/src/main/scala/simple/Platform.scala b/examples/crossBuilds/simple/js/src/main/scala/simple/Platform.scala
index ee2f5da..35ebe1d 100644
--- a/examples/crossBuilds/simple/js/src/main/scala/simple/Platform.scala
+++ b/examples/crossBuilds/simple/js/src/main/scala/simple/Platform.scala
@@ -4,12 +4,12 @@ import scala.scalajs.js
object Platform extends js.JSApp{
def format(ts: Long) = {
- new js.Date(ts).toLocaleString()
+ new js.Date(ts).toISOString()
}
def main() = {
val times = Seq(
- System.currentTimeMillis(),
- System.currentTimeMillis() + 1000
+ 0L,
+ 1L << 32
)
println("Running on JS! " + 1.0d)
println(Simple.formatTimes(times))
diff --git a/examples/crossBuilds/simple/jvm/src/main/scala/simple/Platform.scala b/examples/crossBuilds/simple/jvm/src/main/scala/simple/Platform.scala
index e8e7a65..c5e8216 100644
--- a/examples/crossBuilds/simple/jvm/src/main/scala/simple/Platform.scala
+++ b/examples/crossBuilds/simple/jvm/src/main/scala/simple/Platform.scala
@@ -1,19 +1,20 @@
//jvm/src/main/scala/simple/Platform.scala
package simple
import java.text.SimpleDateFormat
+import java.util.{TimeZone, Locale}
object Platform{
def format(ts: Long) = {
- val fmt =
- "MMMM d, yyyy h:mm:ss aaa z"
- new SimpleDateFormat(fmt).format(
- new java.util.Date(ts)
+ val fmt = new SimpleDateFormat(
+ "yyyy-MM-dd'T'HH:mm:ss.sss'Z'"
)
+ fmt.setTimeZone(TimeZone.getTimeZone("UTC"))
+ fmt.format(new java.util.Date(ts))
}
def main(args: Array[String]) = {
val times = Seq(
- System.currentTimeMillis(),
- System.currentTimeMillis() + 1000
+ 0L,
+ 1L << 32
)
println("Running on JVM! " + 1.0d)
println(Simple.formatTimes(times))
diff --git a/examples/crossBuilds/simple2/js/shared/main/scala/simple/Simple.scala b/examples/crossBuilds/simple2/js/shared/main/scala/simple/Simple.scala
index d3b0278..4ed0285 100644
--- a/examples/crossBuilds/simple2/js/shared/main/scala/simple/Simple.scala
+++ b/examples/crossBuilds/simple2/js/shared/main/scala/simple/Simple.scala
@@ -1,7 +1,7 @@
/*shared/main/scala/simple/Simple.scala*/
package simple
object Simple{
- def formatTimes(timestamps: Seq[Long]): String = {
- timestamps.map(Platform.format).mkString("\n")
+ def formatTimes(timestamps: Seq[Long]): Seq[String] = {
+ timestamps.map(Platform.format).map(_.dropRight(5))
}
} \ No newline at end of file
diff --git a/examples/crossBuilds/simple2/js/shared/test/scala/simple/SimpleTest.scala b/examples/crossBuilds/simple2/js/shared/test/scala/simple/SimpleTest.scala
index ec6b29f..b348c6f 100644
--- a/examples/crossBuilds/simple2/js/shared/test/scala/simple/SimpleTest.scala
+++ b/examples/crossBuilds/simple2/js/shared/test/scala/simple/SimpleTest.scala
@@ -5,9 +5,16 @@ import utest._
object SimpleTest extends TestSuite{
val tests = TestSuite{
'format{
- 'nil - assert(Simple.formatTimes(Nil) == "")
- 'timeZero - assert(
- Simple.formatTimes(Seq(0)) == "December 31, 1969 4:00:00 PM PST")
- }
+ 'nil - assert(Simple.formatTimes(Nil) == Nil)
+ 'timeZero - {
+ val timestamps = Seq(0L, 1L << 32)
+ val expected = Seq(
+ "1970-01-01T00:00:00",
+ "1970-02-19T17:02:47"
+ )
+ val formatted = Simple.formatTimes(timestamps)
+ assert(formatted == expected)
+ }
+ }
}
} \ No newline at end of file
diff --git a/examples/crossBuilds/simple2/js/src/main/scala/simple/Platform.scala b/examples/crossBuilds/simple2/js/src/main/scala/simple/Platform.scala
index 2a02a5e..42cc7dc 100644
--- a/examples/crossBuilds/simple2/js/src/main/scala/simple/Platform.scala
+++ b/examples/crossBuilds/simple2/js/src/main/scala/simple/Platform.scala
@@ -4,6 +4,6 @@ import scala.scalajs.js
object Platform{
def format(ts: Long) = {
- new js.Date(ts).toLocaleString()
+ new js.Date(ts).toISOString()
}
} \ No newline at end of file
diff --git a/examples/crossBuilds/simple2/jvm/src/main/scala/simple/Platform.scala b/examples/crossBuilds/simple2/jvm/src/main/scala/simple/Platform.scala
index 1b7be56..4713005 100644
--- a/examples/crossBuilds/simple2/jvm/src/main/scala/simple/Platform.scala
+++ b/examples/crossBuilds/simple2/jvm/src/main/scala/simple/Platform.scala
@@ -1,13 +1,14 @@
//jvm/src/main/scala/simple/Platform.scala
package simple
import java.text.SimpleDateFormat
+import java.util.TimeZone
object Platform{
def format(ts: Long) = {
- val fmt =
- "MMMM d, yyyy h:mm:ss aaa z"
- new SimpleDateFormat(fmt).format(
- new java.util.Date(ts)
+ val fmt = new SimpleDateFormat(
+ "yyyy-MM-dd'T'HH:mm:ss.sss'Z'"
)
+ fmt.setTimeZone(TimeZone.getTimeZone("UTC"))
+ fmt.format(new java.util.Date(ts))
}
} \ No newline at end of file