diff --git a/src/main/scala/eu/nomad_lab/parsers/GulpParser.scala b/src/main/scala/eu/nomad_lab/parsers/GulpParser.scala new file mode 100644 index 0000000000000000000000000000000000000000..0d9157ecb6d3dbcf87337e7c797fa35bfb517a9b --- /dev/null +++ b/src/main/scala/eu/nomad_lab/parsers/GulpParser.scala @@ -0,0 +1,49 @@ +package eu.nomad_lab.parsers + +import eu.{ nomad_lab => lab } +import eu.nomad_lab.DefaultPythonInterpreter +import org.{ json4s => jn } +import scala.collection.breakOut + +object GulpParser extends SimpleExternalParserGenerator( + name = "GulpParser", + parserInfo = jn.JObject( + ("name" -> jn.JString("GulpParser")) :: + ("parserId" -> jn.JString("GulpParser" + lab.GulpVersionInfo.version)) :: + ("versionInfo" -> jn.JObject( + ("nomadCoreVersion" -> jn.JObject(lab.NomadCoreVersionInfo.toMap.map { + case (k, v) => k -> jn.JString(v.toString) + }(breakOut): List[(String, jn.JString)])) :: + (lab.GulpVersionInfo.toMap.map { + case (key, value) => + (key -> jn.JString(value.toString)) + }(breakOut): List[(String, jn.JString)]) + )) :: Nil + ), + mainFileTypes = Seq("text/.*"), + mainFileRe = """\s*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\**\s* +\s*\*\s*GENERAL UTILITY LATTICE PROGRAM\s*\*\s* +\s*\*\s*Julian Gale\s*\*\s* +\s*\*\s*Nanochemistry Research Institute\s*\*\s* +\s*\*\s*Department of Chemistry\s*\*\s* +\s*\*\s*Curtin University, Western Australia\s*\*\s* +\s*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\**\s* +""".r, + cmd = Seq(DefaultPythonInterpreter.pythonExe(), "${envDir}/parsers/gulp/parser/parser-gulp/main.py", + "--uri", "${mainFileUri}", "${mainFilePath}"), + resList = Seq( + "parser-gulp/main.py", + "parser-gulp/spacegroups.py", + "parser-gulp/setup_paths.py", + "nomad_meta_info/public.nomadmetainfo.json", + "nomad_meta_info/common.nomadmetainfo.json", + "nomad_meta_info/meta_types.nomadmetainfo.json", + "nomad_meta_info/gulp.nomadmetainfo.json" + ) ++ DefaultPythonInterpreter.commonFiles(), + dirMap = Map( + "parser-gulp" -> "parsers/gulp/parser/parser-gulp", + "nomad_meta_info" -> "nomad-meta-info/meta_info/nomad_meta_info", + "python" -> "python-common/common/python/nomadcore" + ) ++ DefaultPythonInterpreter.commonDirMapping(), + metaInfoEnv = Some(lab.meta.KnownMetaInfoEnvs.gulp) +) diff --git a/src/test/scala/eu/nomad_lab/parsers/GulpParserSpec.scala b/src/test/scala/eu/nomad_lab/parsers/GulpParserSpec.scala new file mode 100644 index 0000000000000000000000000000000000000000..c2a41d80a3350e22c424321fc432190cf1eaee96 --- /dev/null +++ b/src/test/scala/eu/nomad_lab/parsers/GulpParserSpec.scala @@ -0,0 +1,27 @@ +package eu.nomad_lab.parsers + +import eu.nomad_lab.{ parsers, DefaultPythonInterpreter } +import org.scalacheck.Properties +import org.specs2.mutable.Specification +import org.{ json4s => jn } + +object GulpParserSpec extends Specification { + "GulpParserTest" >> { + "test example1 " >> { + "test with json-events" >> { + ParserRun.parse(GulpParser, "parsers/gulp/test/examples/outputs/example1.got", "json-events") must_== ParseResult.ParseSuccess + } + "test with json" >> { + ParserRun.parse(GulpParser, "parsers/gulp/test/examples/outputs/example1.got", "json") must_== ParseResult.ParseSuccess + } + } + "test example2 " >> { + "test with json-events" >> { + ParserRun.parse(GulpParser, "parsers/gulp/test/examples/outputs/example2.got", "json-events") must_== ParseResult.ParseSuccess + } + "test with json" >> { + ParserRun.parse(GulpParser, "parsers/gulp/test/examples/outputs/example2.got", "json") must_== ParseResult.ParseSuccess + } + } + } +}