com.github.marklister.collections

io

package io

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. io
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Type Members

  1. abstract class AbstractIterator[+A] extends Iterator[A]

  2. class CSVReader extends Iterator[Array[String]]

    Csv parser.

    Csv parser. I used OpenCSV for a long time but the advent of scala.ja means that a pure scala solution now makes more sense. Not a parser combinator as I'd like to maximize performance in future.

    A BufferedReader performs substantially better than a Reader even when using read()

  3. sealed abstract class CsvParser extends AnyRef

    A Strongly typed Csv to Case Class, CollSeq[T1,T2,...Tn] Iterator[TupleN] or Iterator[Case Class] Parser.

    A Strongly typed Csv to Case Class, CollSeq[T1,T2,...Tn] Iterator[TupleN] or Iterator[Case Class] Parser. Use the companion object to instantiate the correct parser:

    scala> val p = CsvParser[String,Int,Double]
    p: com.github.marklister.collections.io.CsvParser3[String,Int,Double] = com.github.marklister.collections.io.CsvParser3@1d8073f
    
    scala> p.parseFile("sample.csv")
    res2: com.github.marklister.collections.immutable.CollSeq3[String,Int,Double] =
    CollSeq((Jan,10,22.33),
            (Feb,20,44.2),
            (Mar,25,55.1))
    
    scala> val data="""10,"stuff",2.2
       | 11,"otherstuff",3.0"""
    data: String =
    10,"stuff",2.2
    11,"otherstuff",3.0
    
    scala> val parsedData=CsvParser[Int,String,Double].parse(new java.io.StringReader(data))
    parsedData: com.github.marklister.collections.immutable.CollSeq3[Int,String,Double] =
    CollSeq((10,stuff,2.2),
           (11,otherstuff,3.0))
    
    scala> case class Foo (i:Int,s:String,d:Double)
    defined class Foo
    
    scala> CsvParser(Foo).parse(new java.io.StringReader(data))
    res1: Seq[Foo] = List(Foo(10,stuff,2.2), Foo(11,otherstuff,3.0))
  4. class CsvParser1[T1] extends CsvParser

  5. class CsvParser10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10] extends CsvParser

  6. class CsvParser11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11] extends CsvParser

  7. class CsvParser12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12] extends CsvParser

  8. class CsvParser13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13] extends CsvParser

  9. class CsvParser14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14] extends CsvParser

  10. class CsvParser15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15] extends CsvParser

  11. class CsvParser16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16] extends CsvParser

  12. class CsvParser17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17] extends CsvParser

  13. class CsvParser18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18] extends CsvParser

  14. class CsvParser19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19] extends CsvParser

  15. class CsvParser2[T1, T2] extends CsvParser

  16. class CsvParser20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20] extends CsvParser

  17. class CsvParser21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21] extends CsvParser

  18. class CsvParser22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22] extends CsvParser

  19. class CsvParser3[T1, T2, T3] extends CsvParser

  20. class CsvParser4[T1, T2, T3, T4] extends CsvParser

  21. class CsvParser5[T1, T2, T3, T4, T5] extends CsvParser

  22. class CsvParser6[T1, T2, T3, T4, T5, T6] extends CsvParser

  23. class CsvParser7[T1, T2, T3, T4, T5, T6, T7] extends CsvParser

  24. class CsvParser8[T1, T2, T3, T4, T5, T6, T7, T8] extends CsvParser

  25. class CsvParser9[T1, T2, T3, T4, T5, T6, T7, T8, T9] extends CsvParser

  26. class CsvParserF1[T1, F] extends CsvParser

  27. class CsvParserF10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, F] extends CsvParser

  28. class CsvParserF11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, F] extends CsvParser

  29. class CsvParserF12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, F] extends CsvParser

  30. class CsvParserF13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, F] extends CsvParser

  31. class CsvParserF14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, F] extends CsvParser

  32. class CsvParserF15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, F] extends CsvParser

  33. class CsvParserF16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, F] extends CsvParser

  34. class CsvParserF17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, F] extends CsvParser

  35. class CsvParserF18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, F] extends CsvParser

  36. class CsvParserF19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, F] extends CsvParser

  37. class CsvParserF2[T1, T2, F] extends CsvParser

  38. class CsvParserF20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, F] extends CsvParser

  39. class CsvParserF21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, F] extends CsvParser

  40. class CsvParserF22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, F] extends CsvParser

  41. class CsvParserF3[T1, T2, T3, F] extends CsvParser

  42. class CsvParserF4[T1, T2, T3, T4, F] extends CsvParser

  43. class CsvParserF5[T1, T2, T3, T4, T5, F] extends CsvParser

  44. class CsvParserF6[T1, T2, T3, T4, T5, T6, F] extends CsvParser

  45. class CsvParserF7[T1, T2, T3, T4, T5, T6, T7, F] extends CsvParser

  46. class CsvParserF8[T1, T2, T3, T4, T5, T6, T7, T8, F] extends CsvParser

  47. class CsvParserF9[T1, T2, T3, T4, T5, T6, T7, T8, T9, F] extends CsvParser

  48. type CsvRenderer = PartialFunction[Any, String]

    A CsvRenderer is a partial function (T) => String You can supply a custom renderer for any of your types that require special handling Have a look at the NaRenderer in Utils for inspiration:

    A CsvRenderer is a partial function (T) => String You can supply a custom renderer for any of your types that require special handling Have a look at the NaRenderer in Utils for inspiration:

    lazy val NaRenderer: CsvRenderer = {case None => "NA"}

    You can chain Renderers using orElse

  49. class GeneralConverter[A] extends AnyRef

    A General Converter is a wrapper for a function (String)=>T

    A General Converter is a wrapper for a function (String)=>T

    This function is used by the CsvParser to parse fields of type T

    There are several default converters defined or you can make your own and make them available as implict parameters.

    The reason we use a wrapper is to avoid any old (String)=>T function being selected by mistake. If you made a GeneralConverter then you almost certainly intended that the parser use it to convert type T.

    Example:

    implicit object ymd extends GeneralConverter[java.util.Date]{
      val f= new java.text.SimpleDateFormat("yy-MM-dd")
      def convert(x:String)=f.parse(x.trim)
    }
    Annotations
    @implicitNotFound( ... )

Value Members

  1. object CsvParser

  2. object GeneralConverter

    The companion class for GeneralConverter.

    The companion class for GeneralConverter. It contains several default converters used by com.github.marklister.collections.io.CsvParser

  3. object Utils

  4. implicit def csvOutput(s: Seq[Product]): CsvOutput

Inherited from AnyRef

Inherited from Any

Ungrouped