ketilovre/angular-json-print

View on GitHub
json-print.min.js

Summary

Maintainability
A
0 mins
Test Coverage
angular.module("json-print",[]).factory("JsonParser",function(){"use strict";return function(){function a(a){var b=/(?!".*":)/,c=/(?=,?$)/;return new RegExp(b.source+a.source+c.source,"gmi")}function b(a,b){return b=b&&b>0?b:4,a?JSON.stringify(a,null,+b).replace(d.string,e.string).replace(d.bool,e.bool).replace(d["null"],e["null"]).replace(d.number,e.number).replace(d.prop,e.prop).replace(d.object,e.object).replace(d.array,e.array):void 0}function c(a){if("object"==typeof a)return a;try{return JSON.parse(a)}catch(b){return null}}var d={prop:/("[\$_a-zA-Z][\$\w]+")(?=:)/gim,bool:a(/(true|false)/),"null":a(/(null)/),number:a(/(-?\d*\.?\d+)/),string:a(/(?:^\s*".*":\s*)?(".*")(?=,?$)/gim),object:/}|{/gm,array:/]|\[/gm},e={prop:'<span class="json-print-prop">$&</span>',bool:'<span class="json-print-bool json-print-$&">$&</span>',"null":'<span class="json-print-null">$&</span>',number:function(a){var b=0===+a?"zero":+a>0?"plus":"minus";return'<span class="json-print-number json-print-'+b+'">'+a+"</span>"},string:function(a,b){var c=b.replace(/</gm,"&lt;").replace(/>/gm,"&gt;");return a.replace(b,'<span class="json-print-string">'+c+"</span>")},object:'<span class="json-print-object">$&</span>',array:'<span class="json-print-array">$&</span>'};return{objectify:c,print:b,patterns:d,replacers:e}}()}).directive("jsonPrint",["JsonParser",function(a){"use strict";return{restrict:"AEC",link:function(b,c,d){b.$watch(d.jsonPrint,function(b){b&&c.html(a.print(a.objectify(b),d.jsonIndent))},!0)}}}]);