Skip to content
This repository was archived by the owner on Jan 1, 2023. It is now read-only.

Commit 24dd6a1

Browse files
committed
🐛 fix Line feed code
1 parent efddead commit 24dd6a1

File tree

3 files changed

+25
-2
lines changed

3 files changed

+25
-2
lines changed

src/utils.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,19 @@ export function converter(node: object | null | undefined): unknown {
7171
return value.replace(/"/g, '\\"')
7272
}
7373

74+
if (/[\t\f\r\n\b]/g.test(value)) {
75+
const codes = ['\t', '\f', '\r', '\n', '\t', '\b']
76+
const replaceCodes = ['\\t', '\\f', '\\r', '\\n', '\\t', '\\b']
77+
let replaceValue = value
78+
for (let i = 0; i < codes.length; i++) {
79+
replaceValue = replaceValue.replace(
80+
new RegExp(codes[i]),
81+
replaceCodes[i]
82+
)
83+
}
84+
return replaceValue
85+
}
86+
7487
return value
7588
}
7689

test/__fixtures__/object/valid_case.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,9 @@ const var11 = { foo: null }
1212
const var12 = { foo: [null, 10, 'foo'] }
1313
const var13 = { foo: [null, [10, 2], [{ foo: 'foo' }]] }
1414
const var14 = { foo: { bar: 1337 } }
15-
const var15 = { 1: "123", 23: 45, b: "b_val" }
15+
const var15 = { 1: "123", 23: 45, b: "b_val" }
16+
const var16 = { foo: 'fo\to' }
17+
const var17 = { foo: 'fo\fo' }
18+
const var18 = { foo: 'fo\ro' }
19+
const var19 = { foo: 'fo\no' }
20+
const var20 = { foo: 'fo\bo' }

test/__fixtures__/object/valid_case_out.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,9 @@ const var11 = JSON.parse('{"foo":null}')
1212
const var12 = JSON.parse('{"foo":[null,10,"foo"]}')
1313
const var13 = JSON.parse('{"foo":[null,[10,2],[{"foo":"foo"}]]}')
1414
const var14 = JSON.parse('{"foo":{"bar":1337}}')
15-
const var15 = JSON.parse('{"1":"123","23":45,"b":"b_val"}')
15+
const var15 = JSON.parse('{"1":"123","23":45,"b":"b_val"}')
16+
const var16 = JSON.parse('{"foo":"fo\\to"}')
17+
const var17 = JSON.parse('{"foo":"fo\\fo"}')
18+
const var18 = JSON.parse('{"foo":"fo\\ro"}')
19+
const var19 = JSON.parse('{"foo":"fo\\no"}')
20+
const var20 = JSON.parse('{"foo":"fo\\bo"}')

0 commit comments

Comments
 (0)