Package

planet7

tabular

Permalink

package tabular

Linear Supertypes
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. tabular
  2. PrettyPrinters
  3. DataSinkImplicits
  4. DataSourceImplicits
  5. MappingBuilders
  6. AnyRef
  7. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Type Members

  1. implicit class AppendableDataSource extends AnyRef

    Permalink
    Definition Classes
    DataSourceImplicits
  2. class BufferedDataSource extends TabularDataSource

    Permalink
  3. class ColumnDoesNotExistException extends RuntimeException

    Permalink
  4. case class Conv[T](f: (String) ⇒ T) extends Product with Serializable

    Permalink
    Definition Classes
    MappingBuilders
    Annotations
    @implicitNotFound( ... )
  5. case class Csv(header: Row, dataRows: Iterator[Row]) extends Iterable[Row] with Product with Serializable

    Permalink

    Csv encapsulates a tabular data structure, as found in a CSV file or spreadsheet.

    Csv encapsulates a tabular data structure, as found in a CSV file or spreadsheet. It allows client code to:

    • read CSV data from a tabular data-source (String, File, InputStream, or anything else)
    • Change the column structure (add, remove, rename and reorder columns)
    • Map data values according to a function (e.g. a lookup, a data-conversion, a default value)
    • Apply fail-fast or reporting-only validations to each row
    • Export the results

    This class may be useful for:

    • ETL of externally-generated data
    • Pre-formatting data before Diffing it during a reconciliation. @see Diff

    Csv is designed to be lazy. The datasource is traversed ONCE, when accessed via the Csv.iterator method. All other operations are declarative (restructuring, data transformations, validations, etc). Thus, the time cost of traversing the data and applying these functions is only paid once, when the client code materialises the Csv.

    TODO - CAS - 07/08/2014 - A Y-shaped pipeline (spits out two CSVs) TODO - CAS - 07/08/2014 - Aggregator 1 - merge columns using a Row => Row (e.g. (firstName, surname) -> s"$firstName $surname") TODO - CAS - 07/08/2014 - Aggregator 2 - merge rows - provide a predicate for row grouping/inclusion/exclusion

  6. class CsvPrinter extends AnyRef

    Permalink
  7. trait DataSinkImplicits extends AnyRef

    Permalink
  8. trait DataSourceImplicits extends AnyRef

    Permalink
  9. case class DefaultParser(delimiter: Char) extends Parser with Product with Serializable

    Permalink
  10. trait Differentiator[U] extends AnyRef

    Permalink
  11. class LineReader extends Iterator[Row]

    Permalink
  12. trait MappingBuilders extends AnyRef

    Permalink
  13. class NoDataInSourceException extends RuntimeException

    Permalink
  14. trait Parser extends AnyRef

    Permalink
  15. trait PrettyPrinters extends AnyRef

    Permalink
  16. class RegexTwoPassParser extends Parser

    Permalink

    Simple parser with common defaults:

    Simple parser with common defaults:

    • Quoted strings are preserved, even with embedded delimiters, e.g.: foo, "one, monkey, two", bar ===> Array("foo", "one, monkey, two", "bar")
    • spaces around elements are ignored (unless quoted) foo , bar , " monkey one ", baz ===> Array("foo", "bar", " monkey one ", "baz")
  17. case class Row(data: Array[String], validationFailures: Seq[String] = Nil) extends Iterable[String] with Product with Serializable

    Permalink
  18. case class RowDiffer(header: Row, fieldComps: (String, Comparator[String])*) extends Differentiator[Row] with Product with Serializable

    Permalink
  19. class RowPrinter extends AnyRef

    Permalink
  20. class ScannerDataSource extends TabularDataSource

    Permalink
  21. trait TabularDataSource extends Closeable

    Permalink

    A way of providing data to an instance of the Csv class.

    A way of providing data to an instance of the Csv class. Most needs should be met by BufferedDataSource, which has a number of implicit adapters declared in the planet7 package.

  22. class ValidationFailedException extends RuntimeException

    Permalink

Value Members

  1. object Csv extends Serializable

    Permalink
  2. object EmptyRow extends Row

    Permalink
  3. object FieldDiffer extends Differentiator[(String, String)] with Product with Serializable

    Permalink
  4. object NaiveRowDiffer extends Differentiator[Row]

    Permalink
  5. object NaiveRowOrdering extends Ordering[Row]

    Permalink
  6. object Parsers

    Permalink
  7. object RegexTwoPassParser

    Permalink
  8. object Row extends Serializable

    Permalink
  9. object StringDiffer extends Differentiator[String] with Product with Serializable

    Permalink
  10. object Validations

    Permalink
  11. object X

    Permalink
    Definition Classes
    MappingBuilders
  12. def by[K](f: (String) ⇒ K)(implicit arg0: Ordering[K]): Ordering[String]

    Permalink

    Used in sort(input, "Age" -> by(_.toInt))

  13. def combine(datasources: TabularDataSource*): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  14. def defaultTo(other: String): (String) ⇒ String

    Permalink
  15. def experimentalFromMemoryMappedFile(f: File): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  16. def experimentalFromScanner(f: File): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  17. def experimentalFromWholeFile(f: File): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  18. def export(csv: Csv, parser: Parser = Parsers.basic): String

    Permalink
  19. implicit def fromColumnStructure(s: Seq[(String, String)]): Array[String]

    Permalink

    Converts Seq("foo" -> "foo", "bar" -> "bar") to Seq("foo", "bar"), to make building header rows easier

  20. def fromFile(f: File, parser: Parser): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  21. implicit def fromFile(f: File): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  22. def fromInputStream(is: InputStream, parser: Parser): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  23. implicit def fromInputStream(is: InputStream): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  24. implicit def fromIterable(it: Iterable[String], parser: Parser): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  25. implicit def fromIterable(it: Iterable[String]): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  26. def fromString(s: String, parser: Parser): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  27. implicit def fromString(s: String): TabularDataSource

    Permalink
    Definition Classes
    DataSourceImplicits
  28. def given[T1, T2, T3](colMod1: String, colMod2: String, colMod3: String): Nothing

    Permalink
    Definition Classes
    MappingBuilders
  29. def given[T1, T2](col1: String, col2: String)(pf: PartialFunction[(T1, T2), String])(implicit t1Conv: Conv[T1], t2Conv: Conv[T2]): (String) ⇒ (Row) ⇒ (Row) ⇒ Row

    Permalink
    Definition Classes
    MappingBuilders
  30. def given[T1](col1: String): Nothing

    Permalink
    Definition Classes
    MappingBuilders
  31. def ignore(columnNames: String*): (Array[String]) ⇒ Array[String]

    Permalink
  32. def showDiffs(left: Row, right: Row): String

    Permalink
    Definition Classes
    PrettyPrinters
  33. def sort(csv: Csv, differ: RowDiffer): Csv

    Permalink
  34. def sort(csv: Csv, fieldComps: (String, Comparator[String])*): Csv

    Permalink
  35. implicit val toBD: Conv[BigDecimal]

    Permalink
    Definition Classes
    MappingBuilders
  36. implicit def toColumnStructure(s: Seq[String]): Seq[(String, String)]

    Permalink

    Converts Seq("foo", "bar") to Seq("foo" -> "foo", "bar" -> "bar") to make operations on column names easier

  37. implicit def toColumnStructure(s: String): (String, String)

    Permalink

    Converts Csv(data).columnStructure("Name") to Csv(data).columnStructure("Name" -> "Name")

  38. implicit val toInt: Conv[Int]

    Permalink
    Definition Classes
    MappingBuilders
  39. implicit def toRowTransformer(mapping: (String, (String) ⇒ (Row) ⇒ (Row) ⇒ Row)): (Row) ⇒ (Row) ⇒ Row

    Permalink
    Definition Classes
    MappingBuilders
  40. implicit def toStringCompare(s: String): (String, Comparator[String])

    Permalink

    Converts sort(input, "Surname") into sort(input, "Surname" -> Comparator[String])

  41. implicit def toValidation(columnAssertion: (String, (String) ⇒ Boolean)): (Row) ⇒ (Row) ⇒ Row

    Permalink

    Used in Cvs.assertAndAbort() and Csv.assertAndReport().

    Used in Cvs.assertAndAbort() and Csv.assertAndReport(). Converts , to build simple validation checks

  42. def top5(csv: Csv): String

    Permalink
    Definition Classes
    PrettyPrinters
  43. def write(csv: Csv, path: String, parser: Parser = Parsers.basic): Unit

    Permalink
    Definition Classes
    DataSinkImplicits

Inherited from PrettyPrinters

Inherited from DataSinkImplicits

Inherited from DataSourceImplicits

Inherited from MappingBuilders

Inherited from AnyRef

Inherited from Any

Ungrouped