Sha256: c2a71f5c608847f6d7ee9d253d72a9adaa11cfc218f7236055650c91801239d8

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

// Concrete Model Editor
//
// Copyright (c) 2010 Martin Thiede
//
// Concrete is freely distributable under the terms of an MIT-style license.

Concrete.Helper = {
	
	createDOMNode: function(tag, attrs, inner) {
		var node = new Element(tag);
		if (attrs.class) node.className = attrs.class;
		if (attrs.style) node.writeAttribute("style", attrs.style);
		node.innerHTML = inner;
		return node;
	},
	
	// simple pretty printing, objects in an array are indented
	prettyPrintJSON: function(json) {
		var lastIndex = 0;
		var result = "";
		var indent = "";
		var objectNestLevel = 0;
		var dedentLevels = [];
		var firstObject = true;
		var firstList = true;
		var writeLine = function(i) {
			result = result + json.slice(lastIndex, i);
			lastIndex = i;
		}
		for (var i=0; i < json.length; i++) {
			if (json[i] == "{" ) {
				writeLine(i);
				if (!firstObject) result = result + "\n" + indent;
				firstObject = false;
				objectNestLevel++;
			}
			else if (json[i] == "}" ) {
				objectNestLevel--;
				if (objectNestLevel == dedentLevels.last()) {
					dedentLevels.pop();
					indent = indent.slice(2);
				}
			}
			else if (json[i] == "[") {
				writeLine(i+1);
				if (!firstList) indent = indent + "  ";
				firstList = false;
			}
			else if (json[i] == "]") {
				indent = indent.slice(2);
			}
			else if (json[i] == ":" && json[i+2] == "{") {
				writeLine(i+2);
				indent = indent + "  ";
				dedentLevels.push(objectNestLevel);
			}
		}
		writeLine(json.length);
		return result;
	}	
	
};

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
concrete-0.2.1 concrete/helper.js
concrete-0.2.0 concrete/helper.js