mirror of
https://github.com/lovasoa/whitebophir
synced 2024-09-20 14:21:54 +00:00
64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
/**
|
|
* 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;
|
|
}());
|
|
|