common.package.scala Maven / Gradle / Ivy
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
}
}