0.1.11 • Published 5 years ago

@bithana/csv v0.1.11

Weekly downloads
-
License
ISC
Repository
github
Last release
5 years ago

Simple CSV Parser

Project Information

  • Main problem this package solves: Parse csv easily.
  • Main language: Typescript.

Getting started

Parse csv string

const csv_str =
`a1,b1,c1
a2,b2,c2
a3,b3,c3`

parse_csv_string(csv_str) // Alias of parse
   .then(console.log) 
   // Result:
   // [ 
   //   [ 'a1', 'b1', 'c1' ], 
   //   [ 'a2', 'b2', 'c2' ], 
   //   [ 'a3', 'b3', 'c3' ] 
   // ]

const csv_str_with_header =
`H1,H2,H3
a1,b1,c1
a2,b2,c2
a3,b3,c3`

parse_csv_string(csv_str_with_header, {columns: true})
   .then(console.log) 
  // Result:
  // [ 
  //   { H1: 'a1', H2: 'b1', H3: 'c1' },
  //   { H1: 'a2', H2: 'b2', H3: 'c2' },
  //   { H1: 'a3', H2: 'b3', H3: 'c3' } 
  // ]

Parse csv file

file.csv

a1,b1,c1
a2,b2,c2
a3,b3,c3
parse_csv_file('path/to/file.scv')
  .then(console.log) 
  // Result:
  // [ 
  //   [ 'a1', 'b1', 'c1' ], 
  //   [ 'a2', 'b2', 'c2' ], 
  //   [ 'a3', 'b3', 'c3' ] 
  // ]

Use different delimiter other than ,

const csv_str =
`a1|b1|c1
a2|b2|c2
a3|b3|c3`

parse_csv_string(csv_str, {delimiter: '|'})
   .then(console.log) 
   // Result:
   // [ 
   //   [ 'a1', 'b1', 'c1' ], 
   //   [ 'a2', 'b2', 'c2' ], 
   //   [ 'a3', 'b3', 'c3' ] 
   // ]

Available options

{
    /**
     * If true, detect and exclude the byte order mark (BOM) from the CSV input if present.
     */
    bom?: boolean;
    /**
     * If true, the parser will attempt to convert input string to native types.
     * If a function, receive the value as first argument, a context as second argument and return a new value. More information about the context properties is available below.
     */
    cast?: boolean | CastingFunction;
    /**
     * If true, the parser will attempt to convert input string to dates.
     * If a function, receive the value as argument and return a new value. It requires the "auto_parse" option. Be careful, it relies on Date.parse.
     */
    cast_date?: boolean | CastingDateFunction;
    /**
     * List of fields as an array,
     * a user defined callback accepting the first line and returning the column names or true if autodiscovered in the first CSV line,
     * default to false,
     * affect the result data set in the sense that records will be objects instead of arrays.
     */
    columns?: any[] | boolean | ((record: any) => boolean | string[]);
    /**
     * Treat all the characters after this one as a comment, default to '' (disabled).
     */
    comment?: string;
    /**
     * Set the field delimiter. One character only, defaults to comma.
     */
    delimiter?: string | Buffer;
    /**
     * Set the escape character, one character only, defaults to double quotes.
     */
    escape?: string | Buffer;
    /**
     * Start handling records from the requested number of records.
     */
    from?: number;
    /**
     * Start handling records from the requested line number.
     */
    from_line?: number;
    /**
     * Generate two properties `info` and `record` where `info` is a snapshot of the info object at the time the record was created and `record` is the parsed array or object.
     */
    info?: boolean;
    /**
     * If true, ignore whitespace immediately following the delimiter (i.e. left-trim all fields), defaults to false.
     * Does not remove whitespace in a quoted field.
     */
    ltrim?: boolean;
    /**
     * Maximum numer of characters to be contained in the field and line buffers before an exception is raised,
     * used to guard against a wrong delimiter or record_delimiter,
     * default to 128000 characters.
     */
    max_record_size?: number;
    /**
     * Name of header-record title to name objects by.
     */
    objname?: string;
    /**
     * Optional character surrounding a field, one character only, defaults to double quotes.
     */
    quote?: string | boolean | Buffer;
    /**
     * Generate two properties raw and row where raw is the original CSV row content and row is the parsed array or object.
     */
    raw?: boolean;
    /**
     * Preserve quotes inside unquoted field.
     */
    relax?: boolean;
    /**
     * Discard inconsistent columns count, default to false.
     */
    relax_column_count?: boolean;
    /**
     * One or multiple characters used to delimit record rows; defaults to auto discovery if not provided.
     * Supported auto discovery method are Linux ("\n"), Apple ("\r") and Windows ("\r\n") row delimiters.
     */
    record_delimiter?: string | string[] | Buffer | Buffer[];
    /**
     * If true, ignore whitespace immediately preceding the delimiter (i.e. right-trim all fields), defaults to false.
     * Does not remove whitespace in a quoted field.
     */
    rtrim?: boolean;
    /**
     * Dont generate empty values for empty lines.
     * Defaults to true
     */
    skip_empty_lines?: boolean;
    /**
     * Skip a line with error found inside and directly go process the next line.
     */
    skip_lines_with_error?: boolean;
    /**
     * Don't generate records for lines containing empty column values (column matching /\s*\/), defaults to false.
     */
    skip_lines_with_empty_values?: boolean;
    /**
     * Stop handling records after the requested number of records.
     */
    to?: number;
    /**
     * Stop handling records after the requested line number.
     */
    to_line?: number;
    /**
     * If true, ignore whitespace immediately around the delimiter, defaults to false.
     * Does not remove whitespace in a quoted field.
     * Default to true.
     */
    trim?: boolean;
}

Development

npm i # Install.
npm t # Run test first.
npm start # Start development.
0.1.11

5 years ago

0.1.10

5 years ago

0.1.9

5 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago