summaryrefslogtreecommitdiff
path: root/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/io/MemFiles.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/io/MemFiles.scala')
-rw-r--r--examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/io/MemFiles.scala105
1 files changed, 105 insertions, 0 deletions
diff --git a/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/io/MemFiles.scala b/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/io/MemFiles.scala
new file mode 100644
index 0000000..68f66dc
--- /dev/null
+++ b/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/io/MemFiles.scala
@@ -0,0 +1,105 @@
+/* __ *\
+** ________ ___ / / ___ __ ____ Scala.js tools **
+** / __/ __// _ | / / / _ | __ / // __/ (c) 2013-2014, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
+** /____/\___/_/ |_/____/_/ | |__/ /____/ **
+** |/____/ **
+\* */
+
+
+package scala.scalajs.tools.io
+
+import java.io._
+
+/** A base class for simple in-memory mutable virtual files. */
+class MemVirtualFile(val path: String) extends VirtualFile {
+ private[this] var _version: Option[String] = None
+
+ override def version: Option[String] = _version
+ def version_=(v: Option[String]): Unit = _version = v
+
+ final def withVersion(v: Option[String]): this.type = {
+ version = v
+ this
+ }
+
+ override def exists: Boolean = true
+}
+
+/** A simple in-memory mutable virtual text file. */
+class MemVirtualTextFile(p: String) extends MemVirtualFile(p)
+ with VirtualTextFile {
+ private[this] var _content: String = ""
+
+ override def content: String = _content
+ def content_=(v: String): Unit = _content = v
+
+ final def withContent(v: String): this.type = {
+ content = v
+ this
+ }
+}
+
+trait WritableMemVirtualTextFile extends MemVirtualTextFile
+ with WritableVirtualTextFile {
+ def contentWriter: Writer = new StringWriter {
+ override def close(): Unit = {
+ super.close()
+ WritableMemVirtualTextFile.this.content = this.toString
+ }
+ }
+}
+
+object WritableMemVirtualTextFile {
+ def apply(path: String): WritableMemVirtualTextFile =
+ new MemVirtualTextFile(path) with WritableMemVirtualTextFile
+}
+
+/** A simple in-memory mutable virtual binary file. */
+class MemVirtualBinaryFile(p: String) extends MemVirtualFile(p)
+ with VirtualBinaryFile {
+ private[this] var _content: Array[Byte] = new Array[Byte](0)
+
+ override def content: Array[Byte] = _content
+ def content_=(v: Array[Byte]): Unit = _content = v
+
+ final def withContent(v: Array[Byte]): this.type = {
+ content = v
+ this
+ }
+}
+
+/** A simple in-memory mutable virtual JS file. */
+class MemVirtualJSFile(p: String) extends MemVirtualTextFile(p)
+ with VirtualJSFile {
+ private[this] var _sourceMap: Option[String] = None
+
+ override def sourceMap: Option[String] = _sourceMap
+ def sourceMap_=(v: Option[String]): Unit = _sourceMap = v
+
+ final def withSourceMap(v: Option[String]): this.type = {
+ sourceMap = v
+ this
+ }
+}
+
+trait WritableMemVirtualJSFile extends MemVirtualJSFile
+ with WritableVirtualJSFile
+ with WritableMemVirtualTextFile {
+
+ def sourceMapWriter: Writer = new StringWriter {
+ override def close(): Unit = {
+ super.close()
+ WritableMemVirtualJSFile.this.sourceMap = Some(this.toString)
+ }
+ }
+}
+
+object WritableMemVirtualJSFile {
+ def apply(path: String): WritableMemVirtualJSFile =
+ new MemVirtualJSFile(path) with WritableMemVirtualJSFile
+}
+
+/** A simple in-memory mutable virtual serialized Scala.js IR file. */
+class MemVirtualSerializedScalaJSIRFile(p: String) extends MemVirtualBinaryFile(p)
+ with VirtualSerializedScalaJSIRFile