angular2-prettyjson
Version:
Angular2 json utils. Includes a pipe to replace Angular's built in json pipe which implements spacing, avoids circular references. Also includes a component that will pretty print json with syntax highlight
5 lines • 3.31 kB
JavaScript
!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports,require("@angular/core")):"function"==typeof define&&define.amd?define(["exports","@angular/core"],factory):factory((global.ng=global.ng||{},global.ng.angular2Pretyjson={}),global.ng.core)}(this,function(exports,core){"use strict";function serializer(){var stack=[],keys=[],cycleReplacer=function(key,value){return stack[0]===value?"[Circular ~]":"[Circular ~."+keys.slice(0,stack.indexOf(value)).join(".")+"]"};return function(key,value){if(stack.length>0){var thisPos=stack.indexOf(this);~thisPos?stack.splice(thisPos+1):stack.push(this),~thisPos?keys.splice(thisPos,1/0,key):keys.push(key),~stack.indexOf(value)&&(value=cycleReplacer.call(this,key,value))}else stack.push(value);return value}}/**
* @license angular2-prettyjson
* MIT license
*/
var PrettyJsonComponent=function(){function PrettyJsonComponent(){}return PrettyJsonComponent.decorators=[{type:core.Component,args:[{selector:"prettyjson",styles:["pre {outline: 1px solid #ccc; padding: 5px; margin: 5px; }\n :host >>> span {white-space: normal;}\n :host >>> .string { color: green; }\n :host >>> .number { color: darkorange; }\n :host >>> .boolean { color: blue; }\n :host >>> .null { color: magenta; }\n :host >>> .key { color: red; }"],template:'\n <pre [innerHtml]="obj | prettyjson">\n </pre>\n '}]}],PrettyJsonComponent.ctorParameters=function(){return[]},PrettyJsonComponent.propDecorators={obj:[{type:core.Input}]},PrettyJsonComponent}(),PrettyJsonPipe=function(){function PrettyJsonPipe(){}return PrettyJsonPipe.prototype.transform=function(obj,spaces){return void 0===spaces&&(spaces=2),this._syntaxHighlight(obj,serializer(),spaces)},PrettyJsonPipe.prototype._syntaxHighlight=function(json,serializer$$1,spacing){return void 0===json?'<span class="undefined"></span>':("string"!=typeof json&&(json=JSON.stringify(json,serializer$$1,spacing)),(json=json.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")).replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g,function(match){var cls="number";return/^"/.test(match)?cls=/:$/.test(match)?"key":"string":/true|false/.test(match)?cls="boolean":/null/.test(match)&&(cls="null"),'<span class="'+cls+'">'+match+"</span>"}))},PrettyJsonPipe.decorators=[{type:core.Pipe,args:[{name:"prettyjson",pure:!1}]}],PrettyJsonPipe.ctorParameters=function(){return[]},PrettyJsonPipe}(),SafeJsonPipe=function(){function SafeJsonPipe(){}return SafeJsonPipe.prototype.transform=function(obj,spaces){return void 0===spaces&&(spaces=2),JSON.stringify(obj,serializer(),spaces)},SafeJsonPipe.decorators=[{type:core.Pipe,args:[{name:"json",pure:!1}]}],SafeJsonPipe.ctorParameters=function(){return[]},SafeJsonPipe}(),PrettyJsonModule=function(){function PrettyJsonModule(){}return PrettyJsonModule.decorators=[{type:core.NgModule,args:[{declarations:[PrettyJsonComponent,PrettyJsonPipe,SafeJsonPipe],exports:[PrettyJsonComponent,PrettyJsonPipe,SafeJsonPipe]}]}],PrettyJsonModule.ctorParameters=function(){return[]},PrettyJsonModule}();exports.PrettyJsonModule=PrettyJsonModule,exports.ɵc=SafeJsonPipe,exports.ɵa=PrettyJsonComponent,exports.ɵb=PrettyJsonPipe,Object.defineProperty(exports,"__esModule",{value:!0})});