// #<{(| // * Escapes `"` charachters from string // |)}># // function escapeString(str: string): string { // return str.replace('"', '\"'); // } // // #<{(| // * Determines if a value is an object // |)}># // export function isObject(value: any): boolean { // var type = typeof value; // return !!value && (type === 'object'); // } // // #<{(| // * Gets constructor name of an object. // * From http://stackoverflow.com/a/332429 // * // |)}># // export function getObjectName(object: Object): string { // if (object === undefined) { // return ''; // } // if (object === null) { // return 'Object'; // } // if (typeof object === 'object' && !object.constructor) { // return 'Object'; // } // // const funcNameRegex = /function ([^(]*)/; // const results = (funcNameRegex).exec((object).constructor.toString()); // if (results && results.length > 1) { // return results[1]; // } else { // return ''; // } // } // // #<{(| // * Gets type of an object. Returns "null" for null objects // |)}># // export function getType(object: Object): string { // if (object === null) { return 'null'; } // return typeof object; // } // // #<{(| // * Generates inline preview for a JavaScript object based on a value // |)}># // export function getValuePreview (object: Object, value: string): string { // var type = getType(object); // // if (type === 'null' || type === 'undefined') { return type; } // // if (type === 'string') { // value = '"' + escapeString(value) + '"'; // } // if (type === 'function'){ // // // Remove content of the function // return object.toString() // .replace(/[\r\n]/g, '') // .replace(/\{.*\}/, '') + '{…}'; // } // return value; // } // // #<{(| // * Generates inline preview for a JavaScript object // |)}># // export function getPreview(object: string): string { // let value = ''; // if (isObject(object)) { // value = getObjectName(object); // if (Array.isArray(object)) { // value += '[' + object.length + ']'; // } // } else { // value = getValuePreview(object, object); // } // return value; // } // // #<{(| // * Generates a prefixed CSS class name // |)}># // export function cssClass(className: string): string { // return `json-formatter-${className}`; // } // // #<{(| // * Creates a new DOM element wiht given type and class // * TODO: move me to helpers // |)}># // export function createElement(type: string, className?: string, content?: Element|string): Element { // const el = document.createElement(type); // if (className) { // el.classList.add(cssClass(className)); // } // if (content !== undefined) { // if (content instanceof Node) { // el.appendChild(content); // } else { // el.appendChild(document.createTextNode(String(content))); // } // } // return el; // }