diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2013-03-27 23:25:43 +0100 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2016-11-10 18:03:20 +0100 |
commit | dcdc4d3e6ed08f37f7acd75c79ddea607d2e8e2a (patch) | |
tree | f5ab0b7e1ab3e2186dd864230419c5dc20404c1f /Scala/example/src/main/scala/common/package.scala | |
parent | ab61b59311fc1428a8edbe99b103ab77627c7dc8 (diff) | |
download | coursera-dcdc4d3e6ed08f37f7acd75c79ddea607d2e8e2a.zip coursera-dcdc4d3e6ed08f37f7acd75c79ddea607d2e8e2a.tar.gz |
Scala : add scala/example
Diffstat (limited to 'Scala/example/src/main/scala/common/package.scala')
-rw-r--r-- | Scala/example/src/main/scala/common/package.scala | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Scala/example/src/main/scala/common/package.scala b/Scala/example/src/main/scala/common/package.scala new file mode 100644 index 0000000..f1c74c3 --- /dev/null +++ b/Scala/example/src/main/scala/common/package.scala @@ -0,0 +1,40 @@ +import java.io.File + +package object common { + + /** An alias for the `Nothing` type. + * Denotes that the type should be filled in. + */ + type ??? = Nothing + + /** An alias for the `Any` type. + * Denotes that the type should be filled in. + */ + type *** = Any + + + /** + * Get a child of a file. For example, + * + * subFile(homeDir, "b", "c") + * + * corresponds to ~/b/c + */ + def subFile(file: File, children: String*) = { + children.foldLeft(file)((file, child) => new File(file, child)) + } + + /** + * Get a resource from the `src/main/resources` directory. Eclipse does not copy + * resources to the output directory, then the class loader cannot find them. + */ + def resourceAsStreamFromSrc(resourcePath: List[String]): Option[java.io.InputStream] = { + val classesDir = new File(getClass.getResource(".").toURI) + val projectDir = classesDir.getParentFile.getParentFile.getParentFile.getParentFile + val resourceFile = subFile(projectDir, ("src" :: "main" :: "resources" :: resourcePath): _*) + if (resourceFile.exists) + Some(new java.io.FileInputStream(resourceFile)) + else + None + } +} |