Tagster
Tagster is simple library which is helping you create html strings with ease.
It works in both node and client-side applications.
Elements
Add slash to the end of element name to create element without closing tag.
var div = new Tagster().element;
var header = new Tagster('header.header', { role: 'header' }).element;
var header = new Tagster('#unique').element;
var image = new Tagster('img/', { src: 'img/partizan.png', alt: 'Volim Partizan!' }).element;
var custom = new Tagster('polymer-ajax', { url: 'http://example.com/json', handleAs: 'json' }).element;
Populate
You can populate element on two ways. First is passing by a string as third param when creating new element.
var header = new Tagster('header', { role: 'header' }, 'I am a header!').element;
Second way is to chain populateWith method which accepts function or string.
var header = new Tagster('header', { role: 'header' }).populateWith('I am a header!').element;
var header = new Tagster('header', { role: 'header' }).populateWith(function () {
return new Tagster('a.logo', { href: '/' }, 'NameOfCompany').element;
}).element;
Helpers
var jquery = new Tagster().script('js/vendor/jquery.js').element;
var style = new Tagster().style('css/style.css').element;
Extensible
Tagster is extensible, so you can create your helpers and methods.
Tagster.prototype.form = function (attrs) {
this.attrs = attrs;
this.el = 'form';
this.createAttributes();
this.createClosingElement();
return this;
};
var form = new Tagster().form({ name: 'form', method: 'POST' }).element;
Tagster.prototype.meta = function (attrs) {
this.attrs = attrs;
this.el = 'meta';
this.createAttributes();
this.createElement();
return this;
};
var viewport = new Tagster().meta({ name: 'viewport', content: 'width=device-width' }).element;
Example
var menu = ['home', 'about', 'portfolio', 'contact'];
var nav = new Tagster('nav.nav', { role: 'navigation' }).populateWith(function () {
return new Tagster('ul').populateWith(function () {
var lis = [];
menu.forEach(function (item) {
lis.push(new Tagster('li.menu-item').populateWith(function () {
return new Tagster('a', { href: '/#' + item }, item).element;
}).element);
});
return lis.join("");
}).element;
}).element;