Add export to common lisp form, forms
[clnl] / bin / runcmd.scala
index eb0d46394a3e2b1697f655a4ab0ea0d93c0c4fea..f4668874a455890a89105a628153573e28b19e85 100755 (executable)
@@ -7,59 +7,82 @@ exec scalas "$0" -q "$@"
 
   logLevel in Global := Level.Error
 
-  scalaVersion := "2.10.3"
+  scalaVersion := "2.9.2"
 
   libraryDependencies ++= Seq(
     "asm" % "asm-all" % "3.3.1",
     "org.picocontainer" % "picocontainer" % "2.13.6",
-    "org.nlogo" % "NetLogo" % "6.0.0-M3" from "http://ccl.northwestern.edu/devel/6.0.0-M3/NetLogo.jar",
-    "org.nlogo" % "NetLogoHeadless" % "6.0.0-M3" from "http://ccl.northwestern.edu/devel/6.0.0-M3/NetLogoHeadless.jar"
+    "org.nlogo" % "NetLogo" % "5.2.0" from "http://ccl.northwestern.edu/netlogo/5.2.0/NetLogo.jar"
   )
 */
 
 import org.nlogo.headless.HeadlessWorkspace
-import org.nlogo.mirror
 import org.nlogo.api
 import org.nlogo.nvm
 import org.nlogo.util.Utils.url2String
 
+import collection.JavaConversions._
+
+val input = io.Source.stdin.getLines.mkString("\n").split("\\@\\#\\$\\#\\@\\#\\$\\#\\@")
+
 System.out.println("----")
 val workspace = HeadlessWorkspace.newInstance
 workspace.silent = true
-workspace.openFromSource(url2String("file:resources/empty.nlogo"))
 
-val commands = io.Source.stdin.getLines.mkString("\n")
+if (input.length > 2 && input(2).length > 0) {
+  val modelSetup = input(2)
+  workspace.openFromSource(modelSetup +
+"""
+@#$#@#$#@
+GRAPHICS-WINDOW
+210
+10
+649
+470
+-1
+-1
+13.0
+1
+10
+1
+1
+1
+0
+1
+1
+1
+-1
+1
+-1
+1
+0
+0
+1
+ticks
+30.0
+
+@#$#@#$#@
+@#$#@#$#@
+@#$#@#$#@
+NetLogo 5.2.0""")
+} else {
+  workspace.openFromSource(url2String("file:resources/empty.nlogo"))
+}
 
-workspace.runCompiledCommands(new api.SimpleJobOwner("test", workspace.world.mainRNG, api.AgentKind.Observer), workspace.compileCommands(commands, api.AgentKind.Observer))
-mirror.Mirrorables.allMirrorables(workspace.world).map( x => {
-  System.out.print("(")
-  System.out.print(":" + x.kind)
-  System.out.print(" ")
-  System.out.print(x.agentKey.id)
-  System.out.print(" (")
-  x.kind.Variables.values.toSeq.map( k => {
-    System.out.print("(:" + k + " ")
-    System.out.print(x.getVariable(k.id) match {
-      case s: java.lang.String => "\"s\""
-      case d: java.lang.Double => d + "d0"
-      case b: java.lang.Boolean => if(b)"T" else "NIL"
-      case _: org.nlogo.api.ShapeList => ":SHAPELIST"
-      case v => v
-    })
-    System.out.print(") ")
-  })
-  System.out.println(")")
-  
-  })
+workspace.mainRNG.setSeed(15)
 
-/*
-workspace.runCompiledCommands(new api.SimpleJobOwner("test", workspace.world.mainRNG, api.AgentKind.Observer), workspace.compileCommands("random-seed 15", api.AgentKind.Observer))
-for(_ <- 1 to 40)
-  System.out.println(workspace.runCompiledReporter(new api.SimpleJobOwner("test", workspace.world.mainRNG, api.AgentKind.Observer), workspace.compileReporter("random-float 30")))
+val commands = input(0)
+if(commands.length > 0) {
+  workspace.runCompiledCommands(new api.SimpleJobOwner("test", workspace.world.mainRNG, classOf[api.Observer]), workspace.compileCommands(commands))
+}
+if(input.length > 1) {
+  val reporter = input(1)
+  if(reporter.length > 0) {
+    System.out.println(org.nlogo.api.Dump.logoObject(workspace.runCompiledReporter(new api.SimpleJobOwner("test", workspace.world.mainRNG, classOf[api.Observer]), workspace.compileReporter(reporter))))
+  }
+}
 
-val m = new org.nlogo.util.MersenneTwisterFast();
-m.setSeed(15);
-for(_ <- 1 to 40)
-  System.out.println(30d * m.nextDouble())*/
+workspace.world.exportWorld(new java.io.PrintWriter(System.out, true), true)
+System.out.println(org.nlogo.headless.Checksummer.calculateChecksum(workspace.world.exportWorld(_, true)))
 
 workspace.dispose