kantan.codecs.resource

Members list

Packages

Adds Byte Order Mark support to resources.

Adds Byte Order Mark support to resources.

By importing this package, the default behaviour of kantan libraries will be changed to: * add a BOM when writing textual data (if one exists for the output charset). * attempt to find a BOM when reading textual data and, if one is found, use the corresponding charset (potentially overriding whatever charset was specified "in-code").

Those behaviours are not enabled by default as they're very Microsoft-specific.

Attributes

Type members

Classlikes

object CloseResult

Attributes

Source
CloseResult.scala
Supertypes
class Object
trait Matchable
class Any
Self type
trait Closeable[A]

Type class for all types that can be closed.

Type class for all types that can be closed.

Attributes

Companion
object
Source
Closeable.scala
Supertypes
class Object
trait Matchable
class Any
object Closeable

Attributes

Companion
trait
Source
Closeable.scala
Supertypes
class Object
trait Matchable
class Any
Self type
Closeable.type
object InputResource

Provides instance summoning methods for InputResource.

Provides instance summoning methods for InputResource.

Attributes

Source
InputResource.scala
Supertypes
class Object
trait Matchable
class Any
Self type
object OpenResult extends WithError[OpenError]

Attributes

Source
OpenResult.scala
Supertypes
trait Simple[OpenError]
class Object
trait Matchable
class Any
Show all
Self type
OpenResult.type

Provides instance summoning methods for OutputResource.

Provides instance summoning methods for OutputResource.

Attributes

Source
OutputResource.scala
Supertypes
class Object
trait Matchable
class Any
Self type

JVM specific instances of Resource.

JVM specific instances of Resource.

Attributes

Source
PlatformSpecificInstances.scala
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object Resource

Attributes

Source
ProcessResult.scala
Supertypes
class Object
trait Matchable
class Any
Show all
Self type

Provides instance summoning methods for ReaderResource.

Provides instance summoning methods for ReaderResource.

Attributes

Source
ReaderResource.scala
Supertypes
class Object
trait Matchable
class Any
Self type
trait Resource[I, R]

Represents a resource that can be opened and worked on.

Represents a resource that can be opened and worked on.

The purpose of this trait is to abstract over the notion of "things that can be opened", such as files, URLs... Default instances are provided for java.io types - java.io.File, for example, has instances for both opening it for reading and for writing.

Type parameters

I

type of the resource itself (eg java.io.File).

R

type of the opened resource (eg java.io.InputStream)

Attributes

Companion
object
Source
Resource.scala
Supertypes
class Object
trait Matchable
class Any
Self type
Resource[I, R]

Attributes

Companion
trait
Source
Resource.scala
Supertypes
class Object
trait Matchable
class Any
Self type
Resource.type
sealed abstract class ResourceError(message: String) extends Error

Errors that can occur while working with a Resource.

Errors that can occur while working with a Resource.

Attributes

Companion
object
Source
ResourceError.scala
Supertypes
class Error
trait Product
trait Equals
class Exception
class Throwable
trait Serializable
class Object
trait Matchable
class Any
Show all
Known subtypes
class CloseError
class OpenError
class ProcessError
object ResourceError

Attributes

Companion
class
Source
ResourceError.scala
Supertypes
trait Sum
trait Mirror
class Object
trait Matchable
class Any
Self type
trait ResourceIterator[+A] extends Closeable

Offers iterator-like access to IO resources.

Offers iterator-like access to IO resources.

For the most part, values of type ResourceIterator can be considered as iterators, with a few improvements.

First, they have a ResourceIterator.close method, which allows you to release the underlying resource when needed. This is fairly important and part of the reason why working with Source.getLines can be so aggravating.

Second, ResourceIterator.close is mostly not needed: whenever an IO error occurs or the underlying resource is empty, it will be closed automatically. Provided you intend to read the whole resource, you never need to explicitly close it. This covers non-obvious cases such as filtering or dropping elements.

You should be able to express most common causes for not reading the entire stream through standard combinators. For example, "take the first n elements" is take(n), or "take all odd elements" is filter(_ % 2 == 0). This allows you to ignore the fact that the underlying resource needs to be closed. Should you ever find yourself in a situation when you just want to stop, however, ResourceIterator.close is available.

Attributes

Companion
object
Source
ResourceIterator.scala
Supertypes
trait Closeable
trait AutoCloseable
class Object
trait Matchable
class Any
Self type

Attributes

Companion
trait
Source
ResourceIterator.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Provides convenience methods for ResourceResult.

Provides convenience methods for ResourceResult.

Attributes

Source
ResourceResult.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Provides instance summoning methods for WriterResource.

Provides instance summoning methods for WriterResource.

Attributes

Source
WriterResource.scala
Supertypes
class Object
trait Matchable
class Any
Self type

Types

Attributes

Source
package.scala
type InputResource[A] = Resource[A, InputStream]

Resource specialised for java.io.InputStream.

Resource specialised for java.io.InputStream.

Attributes

Source
package.scala
type OpenResult[A] = Either[OpenError, A]

Attributes

Source
package.scala
type OutputResource[A] = Resource[A, OutputStream]

Resource specialised for java.io.OutputStream.

Resource specialised for java.io.OutputStream.

Attributes

Source
package.scala

Attributes

Source
package.scala
type ReaderResource[A] = Resource[A, Reader]

Resource specialised for java.io.Reader.

Resource specialised for java.io.Reader.

Note that it's good practice not to declare explicit instances of ReaderResource for types that have an instance of InputResource. It's better to let the implicit resolution mechanism work out how to best turn an InputStream into a Reader - the JVM-specific kantan.codecs.resource.bom package, in particular, relies on this.

Attributes

Source
package.scala

Attributes

Source
package.scala
type WriterResource[A] = Resource[A, Writer]

Resource specialised for java.io.Writer.

Resource specialised for java.io.Writer.

Note that it's good practice not to declare explicit instances of WriterResource for types that have an instance of OutputResource. It's better to let the implicit resolution mechanism work out how to best turn an OutputStream into a Writer - the JVM-specific kantan.codecs.resource.bom package, in particular, relies on this.

Attributes

Source
package.scala