1st version
This commit is contained in:
68
Jira_helper/node_modules/csv-parse/lib/api/init_state.js
generated
vendored
Normal file
68
Jira_helper/node_modules/csv-parse/lib/api/init_state.js
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
import ResizeableBuffer from "../utils/ResizeableBuffer.js";
|
||||
|
||||
// white space characters
|
||||
// https://en.wikipedia.org/wiki/Whitespace_character
|
||||
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Character_Classes#Types
|
||||
// \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff
|
||||
const np = 12;
|
||||
const cr = 13; // `\r`, carriage return, 0x0D in hexadécimal, 13 in decimal
|
||||
const nl = 10; // `\n`, newline, 0x0A in hexadecimal, 10 in decimal
|
||||
const space = 32;
|
||||
const tab = 9;
|
||||
|
||||
const init_state = function (options) {
|
||||
return {
|
||||
bomSkipped: false,
|
||||
bufBytesStart: 0,
|
||||
castField: options.cast_function,
|
||||
commenting: false,
|
||||
// Current error encountered by a record
|
||||
error: undefined,
|
||||
enabled: options.from_line === 1,
|
||||
escaping: false,
|
||||
escapeIsQuote:
|
||||
Buffer.isBuffer(options.escape) &&
|
||||
Buffer.isBuffer(options.quote) &&
|
||||
Buffer.compare(options.escape, options.quote) === 0,
|
||||
// columns can be `false`, `true`, `Array`
|
||||
expectedRecordLength: Array.isArray(options.columns)
|
||||
? options.columns.length
|
||||
: undefined,
|
||||
field: new ResizeableBuffer(20),
|
||||
firstLineToHeaders: options.cast_first_line_to_header,
|
||||
needMoreDataSize: Math.max(
|
||||
// Skip if the remaining buffer smaller than comment
|
||||
options.comment !== null ? options.comment.length : 0,
|
||||
// Skip if the remaining buffer can be delimiter
|
||||
...options.delimiter.map((delimiter) => delimiter.length),
|
||||
// Skip if the remaining buffer can be escape sequence
|
||||
options.quote !== null ? options.quote.length : 0,
|
||||
),
|
||||
previousBuf: undefined,
|
||||
quoting: false,
|
||||
stop: false,
|
||||
rawBuffer: new ResizeableBuffer(100),
|
||||
record: [],
|
||||
recordHasError: false,
|
||||
record_length: 0,
|
||||
recordDelimiterMaxLength:
|
||||
options.record_delimiter.length === 0
|
||||
? 0
|
||||
: Math.max(...options.record_delimiter.map((v) => v.length)),
|
||||
trimChars: [
|
||||
Buffer.from(" ", options.encoding)[0],
|
||||
Buffer.from("\t", options.encoding)[0],
|
||||
],
|
||||
wasQuoting: false,
|
||||
wasRowDelimiter: false,
|
||||
timchars: [
|
||||
Buffer.from(Buffer.from([cr], "utf8").toString(), options.encoding),
|
||||
Buffer.from(Buffer.from([nl], "utf8").toString(), options.encoding),
|
||||
Buffer.from(Buffer.from([np], "utf8").toString(), options.encoding),
|
||||
Buffer.from(Buffer.from([space], "utf8").toString(), options.encoding),
|
||||
Buffer.from(Buffer.from([tab], "utf8").toString(), options.encoding),
|
||||
],
|
||||
};
|
||||
};
|
||||
|
||||
export { init_state };
|
||||
Reference in New Issue
Block a user