summaryrefslogtreecommitdiff
path: root/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/classpath/builder/AbstractPartialClasspathBuilder.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/classpath/builder/AbstractPartialClasspathBuilder.scala')
-rw-r--r--examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/classpath/builder/AbstractPartialClasspathBuilder.scala47
1 files changed, 47 insertions, 0 deletions
diff --git a/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/classpath/builder/AbstractPartialClasspathBuilder.scala b/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/classpath/builder/AbstractPartialClasspathBuilder.scala
new file mode 100644
index 0000000..9889f4c
--- /dev/null
+++ b/examples/scala-js/tools/shared/src/main/scala/scala/scalajs/tools/classpath/builder/AbstractPartialClasspathBuilder.scala
@@ -0,0 +1,47 @@
+/* __ *\
+** ________ ___ / / ___ __ ____ Scala.js tools **
+** / __/ __// _ | / / / _ | __ / // __/ (c) 2013-2014, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
+** /____/\___/_/ |_/____/_/ | |__/ /____/ **
+** |/____/ **
+\* */
+
+
+package scala.scalajs.tools.classpath.builder
+
+import scala.scalajs.tools.jsdep.JSDependencyManifest
+import scala.scalajs.tools.classpath._
+import scala.scalajs.tools.io._
+
+import scala.collection.mutable
+import scala.collection.immutable.Seq
+
+trait AbstractPartialClasspathBuilder extends ClasspathContentHandler
+ with ClasspathElementsTraverser {
+
+ private val jsDepManifests = mutable.ListBuffer.empty[JSDependencyManifest]
+ private val irFiles = mutable.Map.empty[String, VirtualScalaJSIRFile]
+ private val otherJSFiles = mutable.Map.empty[String, VirtualJSFile]
+
+ override protected def handleIR(relPath: String,
+ ir: => VirtualScalaJSIRFile): Unit = {
+ if (!irFiles.contains(relPath))
+ irFiles += relPath -> ir
+ }
+
+ override protected def handleJS(js: => VirtualJSFile): Unit = {
+ val file = js
+ if (!otherJSFiles.contains(file.name))
+ otherJSFiles += file.name -> file
+ }
+
+ override protected def handleDepManifest(m: => JSDependencyManifest): Unit = {
+ jsDepManifests += m
+ }
+
+ def build(cp: Seq[File]): PartialClasspath = {
+ val version = traverseClasspathElements(cp)
+ new PartialClasspath(jsDepManifests.toList, otherJSFiles.toMap,
+ irFiles.values.toList, Some(version))
+ }
+}