From 544a38dd45f6a58d34296c6c768afd086eb2ac70 Mon Sep 17 00:00:00 2001 From: Christopher Lenz Date: Fri, 28 Mar 2008 23:32:19 +0000 Subject: Imported trunk. git-svn-id: https://svn.apache.org/repos/asf/incubator/couchdb/trunk@642432 13f79535-47bb-0310-9956-ffa450edef68 --- share/www/script/pprint.js | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 share/www/script/pprint.js (limited to 'share/www/script/pprint.js') diff --git a/share/www/script/pprint.js b/share/www/script/pprint.js new file mode 100644 index 00000000..981db0f2 --- /dev/null +++ b/share/www/script/pprint.js @@ -0,0 +1,60 @@ +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. + +/* JSON pretty printing */ + +function prettyPrintJSON(val, indent, linesep, depth) { + indent = indent != null ? indent : 4; + linesep = linesep != null ? linesep : "\n"; + depth = depth != null ? depth : 1; + var propsep = linesep.length ? "," + linesep : ", "; + var tab = []; + for (var i = 0; i < indent * depth; i++) tab.push(""); + tab = tab.join(" "); + switch (typeof val) { + case "boolean": + case "number": + case "string": + return JSON.stringify(val); + case "object": { + if (val === null) return "null"; + if (val.constructor == Date) return JSON.stringify(val); + var buf = []; + if (val.constructor == Array) { + buf.push("["); + for (var index = 0; index < val.length; index++) { + buf.push(index > 0 ? propsep : linesep); + buf.push( + tab, prettyPrintJSON(val[index], indent, linesep, depth + 1) + ); + } + if (index >= 0) buf.push(linesep, tab.substr(indent)); + buf.push("]"); + } else { + buf.push("{"); + var index = 0; + for (var key in val) { + if (!val.hasOwnProperty(key)) continue; + buf.push(index > 0 ? propsep : linesep); + buf.push( + tab, JSON.stringify(key), ": ", + prettyPrintJSON(val[key], indent, linesep, depth + 1) + ); + index++; + } + if (index >= 0) buf.push(linesep, tab.substr(indent)); + buf.push("}"); + } + return buf.join(""); + } + } +} -- cgit v1.2.3