/** * MINITPL ********************************************************* * @licstart The following is the entire license notice for the * JavaScript code in this page. * * Copyright (C) 2013 Ophir LOJKINE * * * The JavaScript code in this page is free software: you can * redistribute it and/or modify it under the terms of the GNU * General Public License (GNU GPL) as published by the Free Software * Foundation, either version 3 of the License, or (at your option) * any later version. The code is distributed WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. * * As additional permission under GNU GPL version 3 section 7, you * may distribute non-source (e.g., minimized or compacted) forms of * that code without the copy of the GNU GPL normally required by * section 4, provided you include this license notice and a URL * through which recipients can access the Corresponding Source. * * @licend */ Minitpl = (function () { function Minitpl(elem, data) { this.elem = (typeof (elem) === "string") ? document.querySelector(elem) : elem; if (!elem) { throw "Invalid element!"; } this.parent = this.elem.parentNode; this.parent.removeChild(this.elem); } function transform(element, transformer) { if (typeof (transformer) === "function") { transformer(element); } else { element.textContent = transformer; } } Minitpl.prototype.add = function (data) { var newElem = this.elem.cloneNode(true); if (typeof (data) === "object") { for (var key in data) { var matches = newElem.querySelectorAll(key); for (var i = 0; i < matches.length; i++) { transform(matches[i], data[key]); } } } else { transform(newElem, data); } this.parent.appendChild(newElem); return newElem; } return Minitpl; }());