From a3e7ac21d4cc2b83cc0e7dfadd7bbdd67aefd98f Mon Sep 17 00:00:00 2001 From: Kyle Ladd Date: Thu, 1 Dec 2016 19:32:23 -0500 Subject: [PATCH 1/4] Show the size of the array --- extension/src/json-viewer/jsl-format.js | 35 ++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/extension/src/json-viewer/jsl-format.js b/extension/src/json-viewer/jsl-format.js index 648d6a77..02b16ab2 100644 --- a/extension/src/json-viewer/jsl-format.js +++ b/extension/src/json-viewer/jsl-format.js @@ -10,7 +10,32 @@ jsl.format = (function () { function repeat(s, count) { return new Array(count + 1).join(s); } - + function getSizeOfArray(jsonstring,startingposition){ + var result; + var currentposition = startingposition + 1; + var inString = false; + var num_opened = 1; + while (num_opened > 0 && currentposition < jsonstring.length) { + var currentChar = jsonstring.charAt(currentposition) + switch (currentChar) { + case '[': + if(!inString){ + num_opened++; + } + break; + case ']': + if(!inString){ + num_opened--; + } + break; + case '"': + inString = !inString; + break; + } + currentposition++; + } + return JSON.parse(jsonstring.substring(startingposition,currentposition)).length; + } function formatJson(json, options) { options = options || {}; var tabSize = options.tabSize || 2; @@ -27,7 +52,6 @@ jsl.format = (function () { indentLevel = 0, inString = false, currentChar = null; - for (i = 0, il = json.length; i < il; i += 1) { currentChar = json.charAt(i); @@ -36,7 +60,12 @@ jsl.format = (function () { case '[': if (!inString) { if (indentCStyle) newJson += "\n" + repeat(tab, indentLevel); - newJson += currentChar + "\n" + repeat(tab, indentLevel + 1); + if(currentChar === "["){ + newJson += "Array[" + getSizeOfArray(json,i) + "]"; + } + newJson += currentChar; + + newJson += "\n" + repeat(tab, indentLevel + 1); indentLevel += 1; } else { newJson += currentChar; From e940be3f7c2a3c18da63baa2b09df31962d4e8ee Mon Sep 17 00:00:00 2001 From: Kyle Ladd Date: Thu, 1 Dec 2016 19:58:58 -0500 Subject: [PATCH 2/4] Try/Catch --- extension/src/json-viewer/jsl-format.js | 46 +++++++++++++++---------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/extension/src/json-viewer/jsl-format.js b/extension/src/json-viewer/jsl-format.js index 02b16ab2..d2ba0479 100644 --- a/extension/src/json-viewer/jsl-format.js +++ b/extension/src/json-viewer/jsl-format.js @@ -15,26 +15,31 @@ jsl.format = (function () { var currentposition = startingposition + 1; var inString = false; var num_opened = 1; - while (num_opened > 0 && currentposition < jsonstring.length) { - var currentChar = jsonstring.charAt(currentposition) - switch (currentChar) { - case '[': - if(!inString){ - num_opened++; - } - break; - case ']': - if(!inString){ - num_opened--; - } - break; - case '"': - inString = !inString; - break; + try{ + while (num_opened > 0 && currentposition < jsonstring.length) { + var currentChar = jsonstring.charAt(currentposition) + switch (currentChar) { + case '[': + if(!inString){ + num_opened++; + } + break; + case ']': + if(!inString){ + num_opened--; + } + break; + case '"': + inString = !inString; + break; + } + currentposition++; } - currentposition++; + return JSON.parse(jsonstring.substring(startingposition,currentposition)).length; + } + catch(err){ + return null; } - return JSON.parse(jsonstring.substring(startingposition,currentposition)).length; } function formatJson(json, options) { options = options || {}; @@ -61,7 +66,10 @@ jsl.format = (function () { if (!inString) { if (indentCStyle) newJson += "\n" + repeat(tab, indentLevel); if(currentChar === "["){ - newJson += "Array[" + getSizeOfArray(json,i) + "]"; + var arraySize = getSizeOfArray(json,i); + if(arraySize !== null){ + newJson += "Array[" + arraySize + "]"; + } } newJson += currentChar; From 74d8d8c0441cd8c982ffbe83e6e200fe38104f4d Mon Sep 17 00:00:00 2001 From: Kyle Ladd Date: Thu, 1 Dec 2016 20:11:48 -0500 Subject: [PATCH 3/4] Make showing the array size an option --- extension/pages/options.html | 3 +++ extension/src/json-viewer/jsl-format.js | 10 ++++++---- extension/src/json-viewer/options/defaults.js | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/extension/pages/options.html b/extension/pages/options.html index e52c2509..062d24c1 100644 --- a/extension/pages/options.html +++ b/extension/pages/options.html @@ -72,6 +72,9 @@

Structure

  • "indentCStyle" - Default false
  • +
  • + "showArraySize" - Default true +
  • diff --git a/extension/src/json-viewer/jsl-format.js b/extension/src/json-viewer/jsl-format.js index d2ba0479..f4db56cb 100644 --- a/extension/src/json-viewer/jsl-format.js +++ b/extension/src/json-viewer/jsl-format.js @@ -45,7 +45,7 @@ jsl.format = (function () { options = options || {}; var tabSize = options.tabSize || 2; var indentCStyle = options.indentCStyle || false; - + var showArraySize = (typeof options.showArraySize !== "undefined" ? Boolean(options.showArraySize) : true); var tab = ""; for (var ts = 0; ts < tabSize; ts++) { tab += " "; @@ -66,9 +66,11 @@ jsl.format = (function () { if (!inString) { if (indentCStyle) newJson += "\n" + repeat(tab, indentLevel); if(currentChar === "["){ - var arraySize = getSizeOfArray(json,i); - if(arraySize !== null){ - newJson += "Array[" + arraySize + "]"; + if(showArraySize){ + var arraySize = getSizeOfArray(json,i); + if(arraySize !== null){ + newJson += "Array[" + arraySize + "]"; + } } } newJson += currentChar; diff --git a/extension/src/json-viewer/options/defaults.js b/extension/src/json-viewer/options/defaults.js index ac534591..d57237c2 100644 --- a/extension/src/json-viewer/options/defaults.js +++ b/extension/src/json-viewer/options/defaults.js @@ -16,7 +16,8 @@ module.exports = { lineWrapping: true, foldGutter: true, tabSize: 2, - indentCStyle: false + indentCStyle: false, + showArraySize:true }, style: [ ".CodeMirror {", From 25b51b123f4b076b3aea255ccd41a4f912c0cdfa Mon Sep 17 00:00:00 2001 From: Kyle Ladd Date: Sun, 4 Dec 2016 22:04:46 -0500 Subject: [PATCH 4/4] Fix variable naming conventions --- extension/src/json-viewer/jsl-format.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/extension/src/json-viewer/jsl-format.js b/extension/src/json-viewer/jsl-format.js index f4db56cb..2bbdfe1b 100644 --- a/extension/src/json-viewer/jsl-format.js +++ b/extension/src/json-viewer/jsl-format.js @@ -10,32 +10,31 @@ jsl.format = (function () { function repeat(s, count) { return new Array(count + 1).join(s); } - function getSizeOfArray(jsonstring,startingposition){ - var result; - var currentposition = startingposition + 1; + function getSizeOfArray(jsonString,startingPosition){ + var currentPosition = startingPosition + 1; var inString = false; - var num_opened = 1; + var numOpened = 1; try{ - while (num_opened > 0 && currentposition < jsonstring.length) { - var currentChar = jsonstring.charAt(currentposition) + while (numOpened > 0 && currentPosition < jsonString.length) { + var currentChar = jsonString.charAt(currentPosition) switch (currentChar) { case '[': if(!inString){ - num_opened++; + numOpened++; } break; case ']': if(!inString){ - num_opened--; + numOpened--; } break; case '"': inString = !inString; break; } - currentposition++; + currentPosition++; } - return JSON.parse(jsonstring.substring(startingposition,currentposition)).length; + return JSON.parse(jsonString.substring(startingPosition,currentPosition)).length; } catch(err){ return null;