From d9914e3e4b009007f283e2c5ad5dab7e689d0e61 Mon Sep 17 00:00:00 2001 From: spmeesseman Date: Tue, 28 May 2019 19:01:16 -0400 Subject: [PATCH 1/2] feat: add support for windows style crlf when making inline edits --- lib/json.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/json.js b/lib/json.js index 89a9559..b7d23f4 100755 --- a/lib/json.js +++ b/lib/json.js @@ -256,6 +256,7 @@ function printHelp() { w(' inspect: node.js `util.inspect` output'); w(' -i Shortcut for `-o inspect`'); w(' -j Shortcut for `-o json`'); + w(' -crlf Use Windows style CRLF for line breaks as opposed to LF'); w(' -0, -2, -4 Set indentation to the given value w/o setting MODE.'); w(' -0 => -o jsony-0'); w(' -4 => -o jsony-4'); @@ -291,6 +292,7 @@ function parseArgv(argv) { jsonIndent: 2, array: null, delim: ' ', + lineBreak: "\n", lookupDelim: '.', items: false, outputKeys: false, @@ -381,6 +383,9 @@ function parseArgv(argv) { throw new Error('unknown output mode: "' + name + '"'); } break; + case '-crlf': + parsed.crlf = "\r\n"; + break; case '-0': parsed.jsonIndent = 0; break; @@ -1342,7 +1347,7 @@ function main(argv) { } break; } - parseChunk(content, undefined, filename, true, headers.join('')); + parseChunk(content, undefined, filename, true, headers.join(''), opts.lineBreak); }); } else { // not streaming @@ -1374,7 +1379,7 @@ function main(argv) { } break; } - parseChunk(buffer, null, filename, false); + parseChunk(buffer, null, filename, false, opts.lineBreak); }); } @@ -1391,7 +1396,7 @@ function main(argv) { * to `filename`. * @param headers {String} Optional. Leading HTTP headers, if any to emit. */ - function parseChunk(chunk, obj, filename, inPlace, headers) { + function parseChunk(chunk, obj, filename, inPlace, headers, lineBreak) { // Expect the chunk to be JSON. if (!chunk.length) { return; @@ -1404,7 +1409,7 @@ function main(argv) { // Use JSON-js' "json_parse" parser to get more detail on the // syntax error. var details = ''; - var normBuffer = chunk.replace(/\r\n|\n|\r/, '\n'); + var normBuffer = chunk.replace(/\r\n|\n|\r/, lineBreak); try { json_parse(normBuffer); details = input.error; From 6f52089094135e6a8c6877d1eb24416d83b9935d Mon Sep 17 00:00:00 2001 From: spmeesseman Date: Tue, 28 May 2019 20:08:19 -0400 Subject: [PATCH 2/2] chore: redo feature commit for crlf support, not working --- lib/json.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/json.js b/lib/json.js index b7d23f4..382c8d0 100755 --- a/lib/json.js +++ b/lib/json.js @@ -256,7 +256,7 @@ function printHelp() { w(' inspect: node.js `util.inspect` output'); w(' -i Shortcut for `-o inspect`'); w(' -j Shortcut for `-o json`'); - w(' -crlf Use Windows style CRLF for line breaks as opposed to LF'); + w(' --crlf Output Windows style CRLF for line breaks as opposed to LF'); w(' -0, -2, -4 Set indentation to the given value w/o setting MODE.'); w(' -0 => -o jsony-0'); w(' -4 => -o jsony-4'); @@ -292,7 +292,7 @@ function parseArgv(argv) { jsonIndent: 2, array: null, delim: ' ', - lineBreak: "\n", + crlf: false, lookupDelim: '.', items: false, outputKeys: false, @@ -383,8 +383,8 @@ function parseArgv(argv) { throw new Error('unknown output mode: "' + name + '"'); } break; - case '-crlf': - parsed.crlf = "\r\n"; + case '--crlf': + parsed.crlf = true; break; case '-0': parsed.jsonIndent = 0; @@ -1082,6 +1082,9 @@ function printDatasets(datasets, filename, headers, opts) { var output = stringifyDatum(dataset[0], opts, isTTY); var sep = dataset[1]; if (output && output.length) { + if (opts.crlf) { + output = output.replace(/\n/g, "\r\n"); + } write(output); write(sep); } else if (dataset[2]) { @@ -1347,7 +1350,7 @@ function main(argv) { } break; } - parseChunk(content, undefined, filename, true, headers.join(''), opts.lineBreak); + parseChunk(content, undefined, filename, true, headers.join('')); }); } else { // not streaming @@ -1379,7 +1382,7 @@ function main(argv) { } break; } - parseChunk(buffer, null, filename, false, opts.lineBreak); + parseChunk(buffer, null, filename, false); }); } @@ -1396,7 +1399,7 @@ function main(argv) { * to `filename`. * @param headers {String} Optional. Leading HTTP headers, if any to emit. */ - function parseChunk(chunk, obj, filename, inPlace, headers, lineBreak) { + function parseChunk(chunk, obj, filename, inPlace, headers) { // Expect the chunk to be JSON. if (!chunk.length) { return; @@ -1409,7 +1412,7 @@ function main(argv) { // Use JSON-js' "json_parse" parser to get more detail on the // syntax error. var details = ''; - var normBuffer = chunk.replace(/\r\n|\n|\r/, lineBreak); + var normBuffer = chunk.replace(/\r\n|\n|\r/, '\n'); try { json_parse(normBuffer); details = input.error;