File tree 2 files changed +14
-0
lines changed
2 files changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -167,6 +167,16 @@ object Source {
167
167
168
168
def fromInputStream (is : InputStream )(implicit codec : Codec ): BufferedSource =
169
169
createBufferedSource(is, reset = () => fromInputStream(is)(codec), close = () => is.close())(codec)
170
+
171
+ /** Reads data from a classpath resource, using either a context classloader (default) or a passed one.
172
+ *
173
+ * @param resource name of the resource to load from the classpath
174
+ * @param classLoader classloader to be used, or context classloader if not specified
175
+ * @return the buffered source
176
+ */
177
+ def fromResource (resource : String , classLoader : ClassLoader = Thread .currentThread().getContextClassLoader())(implicit codec : Codec ): BufferedSource =
178
+ fromInputStream(classLoader.getResourceAsStream(resource))
179
+
170
180
}
171
181
172
182
/** An iterable representation of source data.
Original file line number Diff line number Diff line change @@ -28,6 +28,10 @@ class SourceTest {
28
28
@ Test def canIterateLines () = {
29
29
assertEquals(sampler.lines.size, (Source fromString sampler).getLines.size)
30
30
}
31
+ @ Test def loadFromResource () = {
32
+ val res = Source .fromResource(" rootdoc.txt" )
33
+ assertTrue(" No classpath resource found" , res.getLines().size > 5 )
34
+ }
31
35
@ Test def canCustomizeReporting () = {
32
36
class CapitalReporting (is : InputStream ) extends BufferedSource (is) {
33
37
override def report (pos : Int , msg : String , out : PrintStream ): Unit = {
You can’t perform that action at this time.
0 commit comments