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 648d6a77..2bbdfe1b 100644 --- a/extension/src/json-viewer/jsl-format.js +++ b/extension/src/json-viewer/jsl-format.js @@ -10,12 +10,41 @@ jsl.format = (function () { function repeat(s, count) { return new Array(count + 1).join(s); } - + function getSizeOfArray(jsonString,startingPosition){ + var currentPosition = startingPosition + 1; + var inString = false; + var numOpened = 1; + try{ + while (numOpened > 0 && currentPosition < jsonString.length) { + var currentChar = jsonString.charAt(currentPosition) + switch (currentChar) { + case '[': + if(!inString){ + numOpened++; + } + break; + case ']': + if(!inString){ + numOpened--; + } + break; + case '"': + inString = !inString; + break; + } + currentPosition++; + } + return JSON.parse(jsonString.substring(startingPosition,currentPosition)).length; + } + catch(err){ + return null; + } + } function formatJson(json, options) { 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 += " "; @@ -27,7 +56,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 +64,17 @@ jsl.format = (function () { case '[': if (!inString) { if (indentCStyle) newJson += "\n" + repeat(tab, indentLevel); - newJson += currentChar + "\n" + repeat(tab, indentLevel + 1); + if(currentChar === "["){ + if(showArraySize){ + var arraySize = getSizeOfArray(json,i); + if(arraySize !== null){ + newJson += "Array[" + arraySize + "]"; + } + } + } + newJson += currentChar; + + newJson += "\n" + repeat(tab, indentLevel + 1); indentLevel += 1; } else { 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 {",