Skip to content

Instantly share code, notes, and snippets.

@rlemon
Created March 31, 2012 21:21
Show Gist options
  • Save rlemon/2268651 to your computer and use it in GitHub Desktop.
Save rlemon/2268651 to your computer and use it in GitHub Desktop.
FragBuilder
var FragBuilder = (function() {
var applyStyles = function(element, style_object) {
for (var prop in style_object) {
element.style[prop] = style_object[prop];
}
};
var generateFragment = function(json) {
var tree = document.createDocumentFragment();
json.forEach(function(obj) {
for (part in obj) {
var el = document.createElement(part);
if ('children' in obj[part]) {
el.appendChild(generateFragment(obj[part].children));
delete obj[part].children;
}
if ('style' in obj[part]) {
applyStyles(el, obj[part].style);
delete obj[part].style;
}
if ('text' in obj[part]) {
el.appendChild(document.createTextNode(obj[part].text));
delete obj[part].text;
}
for (var attr in obj[part]) {
el.setAttribute(attr, obj[part][attr]);
}
tree.appendChild(el);
}
});
return tree;
};
return {
'build': generateFragment
};
}());
@rlemon
Copy link
Author

rlemon commented Mar 31, 2012

@rlemon
Copy link
Author

rlemon commented Mar 31, 2012

new update accepts frags as json. http://jsfiddle.net/rlemon/GPRte/4/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment