Skip to content

Instantly share code, notes, and snippets.

abstract class InputBoxType[T](val name:String)
case object Num extends InputBoxType[Double]("Number")
case object Str extends InputBoxType[String]("String")
case object StrReporter extends InputBoxType[String]("String (reporter)")
case object StrCommand extends InputBoxType[String]("String (commands)")
case object Col extends InputBoxType[Int]("Color")
case class InputBox[T](left: Int = 0, top: Int = 0, right: Int = 0, bottom: Int = 0, varName: String, value: T, multiline: Boolean = false, boxtype: InputBoxType[T]){
def say: String = boxtype match {
case c: Col.type => "hello"
case _ => "goodbye"
import AssemblyKeys._
assemblySettings
val jar = "LevelSpaceGUI.jar"
jarName in assembly := jar
target in assembly := baseDirectory.value
def compile[T, W <: Widget](model: CompiledModel)(widget: W): CompiledWidget[W] = {
def compileCmd(code: String) = model.compileCommand(sanitizeSource(code))
def compileRep(code: String) = model.compileReporter(sanitizeSource(code))
def compilePen(pen: Pen) = CompiledPen(pen, compileCmd(pen.setupCode), compileCmd(pen.updateCode))
widget match {
case v: View => CompiledView(v)
case b: Button => CompiledButton(b, compileCmd(b.source))
case p: Plot => CompiledPlot(p, compileCmd(p.setupCode), compileCmd(p.updateCode), p.pens map compilePen)
case p: Pen => compilePen(p)
case t: TextBox => CompiledTextBox(t)
val wolfSheep = Source.fromFile("public/modelslib/Sample Models/Biology/Wolf Sheep Predation.nlogo").mkString
val wsModelV = CompiledModel.fromNlogoContents(wolfSheep)
val wsModel = {
val modelShouldHaveCompiled = (failures: NonEmptyList[CompilerException]) =>
s"""|Model should have compiled but failed with the following messages:
|${failures.stream.mkString("\n")}""".stripMargin
wsModelV valueOr { e => fail(modelShouldHaveCompiled(e)) }
}