Fixed js build.
authorTomas Zeman <tomas@functionals.cz>
Thu, 19 Sep 2019 13:00:31 +0200
changeset 5 44aad285dc66
parent 4 dbc63b7c43ce
child 6 7146cc2c4b81
Fixed js build.
js/src/net/tz/spss/package.scala
jvm/src/net/tz/spss/SpssReader.scala
jvm/src/net/tz/spss/package.scala
shared/net/tz/spss/SpssValue.scala
shared/net/tz/spss/SpssVariable.scala
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/js/src/net/tz/spss/package.scala	Thu Sep 19 13:00:31 2019 +0200
@@ -0,0 +1,7 @@
+package net.tz
+
+package object spss {
+
+  type DoubleRange = (Double, Double)
+
+}
--- a/jvm/src/net/tz/spss/SpssReader.scala	Thu Sep 19 12:49:03 2019 +0200
+++ b/jvm/src/net/tz/spss/SpssReader.scala	Thu Sep 19 13:00:31 2019 +0200
@@ -11,13 +11,23 @@
   extends Iterator[Map[SpssVariable, SpssValue]] {
 
   lazy val variables: List[SpssVariable] =
-    r.getVariables.asScala.toList map(SpssVariable(_))
+    r.getVariables.asScala.toList map spssVarJtoS
 
   override def hasNext: Boolean = r.readNextCase()
 
   override def next(): Map[SpssVariable, SpssValue] =
-    variables map(v => (v, SpssValue(r, v))) toMap
+    variables map(v => (v, asValue(v))) toMap
 
+  private def asValue(variable: SpssVariable): SpssValue = {
+    val i = variable.index
+    if (r.isSystemMissing(i))
+      SystemMissing
+    else
+      Option(r.getDoubleValue(i)) map(x =>
+        if (r.isValueMissing(i, x)) MissingDouble(x) else DoubleValue(x)
+        ) orElse (Option(r.getStringValue(i)) map StringValue
+        ) getOrElse SystemMissing
+  }
 }
 
 object SpssReader {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jvm/src/net/tz/spss/package.scala	Thu Sep 19 13:00:31 2019 +0200
@@ -0,0 +1,25 @@
+package net.tz
+
+import com.bedatadriven.spss.{SpssVariable => JVar}
+
+import scala.collection.JavaConverters._
+import scala.language.{implicitConversions, postfixOps}
+
+package object spss {
+
+  type DoubleRange = (Double, Double)
+
+  implicit def spssVarJtoS(v: JVar): SpssVariable = SpssVariable(
+    name = v.getVariableName,
+    shortName = v.getShortName,
+    isNumeric = v.isNumeric,
+    index = v.getIndex,
+    label = v.getVariableLabel,
+    missingRange = if (v.isHasMissingRange)
+      Some((v.getMissingMin.doubleValue(), v.getMissingMax.doubleValue()))
+    else None,
+    missing = v.getMissing.asScala.map(_.doubleValue()).toList,
+    missingStrings = v.getMissingStrings.asScala.toList,
+    labels = v.getValueLabels.asScala.map { case (k,x) =>
+      (k.doubleValue(), x) } toMap)
+}
--- a/shared/net/tz/spss/SpssValue.scala	Thu Sep 19 12:49:03 2019 +0200
+++ b/shared/net/tz/spss/SpssValue.scala	Thu Sep 19 13:00:31 2019 +0200
@@ -1,7 +1,5 @@
 package net.tz.spss
 
-import com.bedatadriven.spss.SpssDataFileReader
-
 sealed trait SpssValue
 
 sealed trait Missing extends SpssValue
@@ -17,17 +15,3 @@
 case object SystemMissing extends Missing
 // ??? case class MissingString(v: String) extends MissingValue[String]
 case class MissingDouble(v: Double) extends MissingValue[Double]
-
-object SpssValue {
-
-  def apply(r: SpssDataFileReader, variable: SpssVariable): SpssValue = {
-    val i = variable.index
-    if (r.isSystemMissing(i))
-      SystemMissing
-    else
-      Option(r.getDoubleValue(i)) map(x =>
-        if (r.isValueMissing(i, x)) MissingDouble(x) else DoubleValue(x)
-        ) orElse (Option(r.getStringValue(i)) map StringValue
-        ) getOrElse SystemMissing
-  }
-}
--- a/shared/net/tz/spss/SpssVariable.scala	Thu Sep 19 12:49:03 2019 +0200
+++ b/shared/net/tz/spss/SpssVariable.scala	Thu Sep 19 13:00:31 2019 +0200
@@ -1,32 +1,8 @@
 package net.tz.spss
 
-import net.tz.spss.SpssVariable.DoubleRange
-import com.bedatadriven.spss.{SpssVariable => JVar}
-
-import scala.collection.JavaConverters._
-import scala.language.postfixOps
-
 case class SpssVariable(name: String, shortName: String, isNumeric: Boolean,
   index: Int, label: String,
   missingRange: Option[DoubleRange] = None,
   missing: List[Double] = Nil,
   missingStrings: List[String] = Nil,
   labels: Map[Double, String] = Map())
-
-object SpssVariable {
-  type DoubleRange = (Double, Double)
-
-  def apply(v: JVar): SpssVariable = SpssVariable(
-    name = v.getVariableName,
-    shortName = v.getShortName,
-    isNumeric = v.isNumeric,
-    index = v.getIndex,
-    label = v.getVariableLabel,
-    missingRange = if (v.isHasMissingRange)
-      Some((v.getMissingMin.doubleValue(), v.getMissingMax.doubleValue()))
-    else None,
-    missing = v.getMissing.asScala.map(_.doubleValue()).toList,
-    missingStrings = v.getMissingStrings.asScala.toList,
-    labels = v.getValueLabels.asScala.map { case (k,x) =>
-      (k.doubleValue(), x) } toMap)
-}