case class RowF[H[+a] <: Option[a], Header](values: NonEmptyList[String], headers: H[NonEmptyList[Header]], line: Option[Long] = None) extends Product with Serializable
A CSV row with or without headers. The presence of headers is encoded via the first type param which is a subtype of scala.Option. By preserving this information in types, it's possible to define Row and CsvRow aliases as if they were plain case classes while keeping the code DRY.
Operations on columns can always be performed using 0-based indices and additionally using a specified header value if headers are present (and this fact statically known).
Note: the following invariant holds when using this class: values
and headers
have the same size if headers are present.
- Source
- RowF.scala
- Alphabetic
- By Inheritance
- RowF
- Serializable
- Product
- Equals
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new RowF(values: NonEmptyList[String], headers: H[NonEmptyList[Header]], line: Option[Long] = None)
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def apply(header: Header)(implicit hasHeaders: HasHeaders[H, Header]): Option[String]
Returns the content of the cell at
header
if it exists.Returns the content of the cell at
header
if it exists. ReturnsNone
ifheader
does not exist for the row. An empty cell value results inSome("")
. - def as[T](header: Header)(implicit hasHeaders: HasHeaders[H, Header], decoder: CellDecoder[T]): DecoderResult[T]
Returns the decoded content of the cell at
header
.Returns the decoded content of the cell at
header
. Fails if the field doesn't exist or cannot be decoded to the expected type. - def asAt[T](idx: Int)(implicit decoder: CellDecoder[T]): DecoderResult[T]
Returns the decoded content of the cell at
idx
.Returns the decoded content of the cell at
idx
. Fails if the index doesn't exist or cannot be decoded to the expected type. - final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def asOptional[T](header: Header, missing: (Header) => DecoderResult[Option[T]] = (header: Header) =>
Left(new DecoderError(s"unknown field $header")), isEmpty: (String) => Boolean = _.isEmpty)(implicit hasHeaders: HasHeaders[H, Header], decoder: CellDecoder[T]): DecoderResult[Option[T]]
Returns the decoded content of the cell at
header
wrapped in Some if the cell is non-empty,None
otherwise.Returns the decoded content of the cell at
header
wrapped in Some if the cell is non-empty,None
otherwise. The meaning of _empty_ can be tuned by setting providing a customisEmpty
predicate (by default, matches the empty string). In case the field does not exist, themissing
parameter defines the behavior (by default, it faile) Fails if the index cannot be decoded to the expected type. - def asOptionalAt[T](idx: Int, missing: (Int) => DecoderResult[Option[T]] = (idx: Int) => Left(new DecoderError(s"unknown index $idx")), isEmpty: (String) => Boolean = _.isEmpty)(implicit decoder: CellDecoder[T]): DecoderResult[Option[T]]
Returns the decoded content of the cell at
idx
wrapped in Some if the cell is non-empty,None
otherwise.Returns the decoded content of the cell at
idx
wrapped in Some if the cell is non-empty,None
otherwise. The meaning of _empty_ can be tuned by setting providing a customisEmpty
predicate (by default, matches the empty string). In case the index does not exist, themissing
parameter defines the behavior (by default, it faile) Fails if the index cannot be decoded to the expected type. - def at(idx: Int): Option[String]
Returns the content of the cell at
idx
if it exists.Returns the content of the cell at
idx
if it exists. ReturnsNone
ifidx
is out of row bounds. An empty cell value results inSome("")
. - def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def delete(header: Header)(implicit hasHeaders: HasHeaders[H, Header]): Option[CsvRow[Header]]
Returns the row without the cell at the given
header
.Returns the row without the cell at the given
header
. If the resulting row is empty, returnsNone
.**Note:** Only the first occurrence of the values with the given header will be deleted. It shouldn't be a problem in the general case as headers should not be duplicated.
- def deleteAt(idx: Int): Option[RowF[H, Header]]
Returns the row without the cell at the given
idx
.Returns the row without the cell at the given
idx
. If the resulting row is empty, returnsNone
. - def dropHeaders: Row
Drop all headers (if any).
Drop all headers (if any).
- returns
a row without headers, but same values
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- val headers: H[NonEmptyList[Header]]
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- val line: Option[Long]
- def modify(header: Header)(f: (String) => String)(implicit hasHeaders: HasHeaders[H, Header]): CsvRow[Header]
Modifies the cell content at the given
header
using the functionf
.Modifies the cell content at the given
header
using the functionf
.**Note:** Only the first occurrence of the values with the given header will be modified. It shouldn't be a problem in the general case as headers should not be duplicated.
- def modifyAt(idx: Int)(f: (String) => String): RowF[H, Header]
Modifies the cell content at the given
idx
using the functionf
. - final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- def set(header: Header, value: String)(implicit hasHeaders: HasHeaders[H, Header]): CsvRow[Header]
Returns the row with the cell at
header
modified tovalue
.Returns the row with the cell at
header
modified tovalue
. If the header wasn't present in the row, it is added to the end of the fields.**Note:** Only the first occurrence of the values with the given header will be modified. It shouldn't be a problem in the general case as headers should not be duplicated.
- def size: Int
Number of cells in the row.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toMap(implicit hasHeaders: HasHeaders[H, Header]): Map[Header, String]
Returns a representation of this row as Map from headers to corresponding cell values.
- def toNonEmptyMap(implicit hasHeaders: HasHeaders[H, Header], order: Order[Header]): NonEmptyMap[Header, String]
Returns a representation of this row as NonEmptyMap from headers to corresponding cell values.
- def updated(header: Header, value: String)(implicit hasHeaders: HasHeaders[H, Header]): CsvRow[Header]
Returns the row with the cell at
header
modified tovalue
.Returns the row with the cell at
header
modified tovalue
.**Note:** Only the first occurrence of the values with the given header will be modified. It shouldn't be a problem in the general case as headers should not be duplicated.
- def updatedAt(idx: Int, value: String): RowF[H, Header]
Returns the row with the cell at
idx
modified tovalue
. - val values: NonEmptyList[String]
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def withLine(line: Option[Long]): RowF[H, Header]
Set the line number for this row.
Deprecated Value Members
- def asNonEmpty[T](header: Header)(implicit hasHeaders: HasHeaders[H, Header], decoder: CellDecoder[T]): DecoderResult[Option[T]]
Returns the decoded content of the cell at
header
wrapped in Some if the cell is non-empty, None otherwise.Returns the decoded content of the cell at
header
wrapped in Some if the cell is non-empty, None otherwise. Fails if the field doesn't exist or cannot be decoded to the expected type.- Annotations
- @deprecated
- Deprecated
(Since version fs2-data 1.7.0) Use
RowF.asOptional
instead, as it gives more flexibility and has the same default behavior.
- def asNonEmptyAt[T](idx: Int)(implicit decoder: CellDecoder[T]): DecoderResult[Option[T]]
Returns the decoded content of the cell at
idx
wrapped in Some if the cell is non-empty, None otherwise.Returns the decoded content of the cell at
idx
wrapped in Some if the cell is non-empty, None otherwise. Fails if the index doesn't exist or cannot be decoded to the expected type.- Annotations
- @deprecated
- Deprecated
(Since version fs2-data 1.7.0) Use
RowF.asOptionalAt
instead, as it gives more flexibility and has the same default behavior.