forked from adaltas/node-csv-parse
-
Notifications
You must be signed in to change notification settings - Fork 0
/
options.escape.coffee
44 lines (39 loc) · 1.33 KB
/
options.escape.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
should = require 'should'
parse = require '../src'
describe 'escape', ->
it 'only apply to quote and escape characters', (next) ->
parse """
20322051544,"19""79.0",8.8017226E7,"A""B""C",45,2000-01-01
28392898392,1974.0,8.8392926E7,DEF,23,2050-11-27
""", escape: '"', (err, data) ->
return next err if err
data.should.eql [
[ '20322051544','19"79.0','8.8017226E7','A"B"C','45','2000-01-01' ]
[ '28392898392','1974.0','8.8392926E7','DEF','23','2050-11-27' ]
]
next()
it 'should honor the backslash escape charactere', (next) ->
parse """
20322051544,"19\\"79.0",8.8017226E7,"A\\"B\\"C",45,2000-01-01
28392898392,1974.0,8.8392926E7,DEF,23,2050-11-27
""", escape: '\\', (err, data) ->
return next err if err
data.should.eql [
[ '20322051544','19\"79.0','8.8017226E7','A\"B\"C','45','2000-01-01' ]
[ '28392898392','1974.0','8.8392926E7','DEF','23','2050-11-27' ]
]
next()
it 'if next char is not in the current chunk', (next) ->
data = []
parser = parse escape: '\\'
parser.on 'readable', ->
while d = parser.read()
data.push d
parser.on 'finish', ->
data.should.eql [
[ 'field with " inside' ]
]
next()
parser.write '"field with \\'
parser.write '" inside"'
parser.end()