Packages

c

info.fingo.spata

CSVConfig

case class CSVConfig extends Product with Serializable

CSV configuration used for creating CSVParser.

This config may be used as a builder to create a parser:

val parser = CSVConfig.fieldSizeLimit(1000).noHeader().get[IO]()

Field delimiter is ',' by default.

Record delimiter is '\n' by default. When the delimiter is line feed ('\n', ASCII 10) and it is preceded by carriage return ('\r', ASCII 13), they are treated as a single character.

Quotation mark is '"' by default. It is required to wrap special characters in quotes - field and record delimiters. Quotation mark in content may appear only inside quotation marks. It has to be doubled to be interpreted as part of actual data, not a control character. If a field starts or end with white character it has to be wrapped in quotation marks. In another case the white characters are stripped.

If the source has a header, which is the default, it is used as an keys to actual values and not included in data. If there is no header, a number-based keys are created (starting from "_1").

If CSV records are converted to case classes, header values are used as class fields and may require remapping. This can be achieved through mapHeader:

config.mapHeader(Map("first name" -> "firstName", "last name" -> "lastName")))

or if there is no header line:

config.mapHeader(Map("_1" -> "firstName", "_2" -> "lastName")))

Header mapping may be also position-based, which is especially handy when there are duplicates in header and name-based remapping does not solve it (because it remaps all occurrences):

config.mapHeader(Map(0 -> "firstName", 1 -> "lastName")))

Field size limit is used to stop processing input when it is significantly larger then expected and avoid OutOfMemoryError. This might happen if the source structure is invalid, e.g. the closing quotation mark is missing. There is no limit by default.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. CSVConfig
  2. Serializable
  3. Product
  4. Equals
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def fieldDelimiter(fd: Char): CSVConfig

    Gets new config from this one by replacing field delimiter with provided one.

  8. val fieldDelimiter: Char
  9. def fieldSizeLimit(fsl: Int): CSVConfig

    Gets new config from this one by replacing field size limit with provided one.

  10. val fieldSizeLimit: Option[Int]
  11. def get[F[_]]()(implicit arg0: Sync[F], arg1: Logger[F]): CSVParser[F]

    Creates CSVParser from this config.

    Creates CSVParser from this config.

    F

    the effect type, with a type class providing support for suspended execution (typically cats.effect.IO) and logging (provided internally by spata)

    returns

    parser configured according to provided settings

  12. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  13. val hasHeader: Boolean
  14. val headerMap: HeaderMap
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. def mapHeader(hm: HeaderMap): CSVConfig

    Remap selected fields names.

  17. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  18. def noHeader(): CSVConfig

    Gets new config from this one by switching off header presence.

  19. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  20. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  21. def productElementNames: Iterator[String]
    Definition Classes
    Product
  22. def quoteMark(qm: Char): CSVConfig

    Gets new config from this one by replacing quotation mark with provided one.

  23. val quoteMark: Char
  24. def recordDelimiter(rd: Char): CSVConfig

    Gets new config from this one by replacing record delimiter with provided one.

  25. val recordDelimiter: Char
  26. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  27. def toString(): String

    Provides configuration description

    Provides configuration description

    returns

    short textual information about configuration

    Definition Classes
    CSVConfig → AnyRef → Any
  28. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  29. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  30. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped