osws-markup v0.0.1
OSWSMarkup / osws-markup
0.0.1
Native JavaScript HTML templating.
The recommended extension for templates: *.markup.js.
The module does not know what tags are paired, which are not. If the description of the tag you specify body argument to the tag will be considered a double as<div> </ div>, otherwise sluchaae single as<br/>.
To render using a nested object markup.renderer.
Usage
var markup = new Markup();
// String encapsulation.
// Drawn at the announcement.
markup.tag("div.string", "content");
// Simple encapsulation.
// Drawn at the announcement. 
var simpleCounter = false;
markup.tag("div.simple", function() {
    if (!simpleCounter) {
        simpleCounter = true;
        markup.tag("input",{type: "checkbox", name: "age", value: "17"});
    } else {
        markup.tag("br");
    }
});
// Synchronous encapsulation.
// Drawn when calling `markup.renderer.render`.
var asyncCounter = false;
markup.tag("div.sync", function(markup) {
    if (!asyncCounter) {
        asyncCounter = true;
        markup.tag("div", "");
    } else {
        markup.tag("br");
    }
});
// Asynchronous encapsulation.
// Drawn when calling `markup.renderer.render`.
var asyncCounter = false;
markup.tag("div.async", function(markup, callback) {
    if (!asyncCounter) {
        asyncCounter = true;
        markup.tag("div", "");
        callback();
    } else {
        markup.tag("br");
        callback();
    }
});
// First rendering gives one result. 
markup.renderer.render(function(error, result) {
    result // <div class="string">content</div><div class="simple"><input type="checkbox" name="age" value="17"/></div><div class="sync"><div></div></div><div class="async"><div></div></div>
    // The second rendering gives a different result.
    markup.renderer.render(function(error, result) {
        result // <div class="string">content</div><div class="simple"><input type="checkbox" name="age" value="17"/></div><div class="sync"><br/></div><div class="async"><br/></div>
        done();
    })
});API
Require
Node.js
var Markup = require("OSWSMarkup");
Window
<script src="osws-markup.js"> or <script src="osws-markup.min.js">
var Markup = OSWSMarkup;
Require.js
require(["osws-markup.js"], function(Markup) {});
Custom
You can also use the file ./sources/markup.js for self-assembly.
Constructor
new Markup(?Object OSWSRenderer renderer);
By default generate a new OSWSRenderer.
var markup = new Markup();
However, you can transfer your OSWSRenderer when creating an instance.
var markup = new Markup(renderer);
Or to override it manually.
markup.renderer = new Renderer();
markup.tag(String selector, ?Object attr, ?String/Function()/Function(markup)/Function(markup, callback) body);
Generator HTML tags.
selector
This argument allows you to specify the short name of the tag and attributes class and id.
markup.tag("imput.error#age.age18");
// <imput class="error age18" id="age" />body
markup.tag("div.menu#top-menu","OSWSMarkup");
// <div class="menu" id="top-menu">OSWSMarkup</div>Simple encapsulation.
Drawn at the announcement.
markup.tag("div.menu#top-menu",function() {
    return "OSWSMarkup"
});Synchronous encapsulation.
Drawn when calling markup.renderer.render.
markup.tag("div.menu#top-menu",function(markup) {
    markup.renderer.addString("OSWSMarkup");
});Asynchronous encapsulation.
Drawn when calling markup.renderer.render.
markup.tag("div.menu#top-menu",function(markup, callback) {
    markup.renderer.addString("OSWSMarkup");
    callback();
});But.
markup.tag("div.menu#top-menu");
// <div class="menu" id="top-menu"/>To generate a pair of tags is necessary to specify the argument body.
markup.tag("div.menu#top-menu","");
// <div class="menu" id="top-menu"></div>attr
markup.tag("imput.error",{ type: "checkbox", name: "age", value: "18" });
// <imput class="error" type="checkbox" name="age" value="18" />Tests
Server
Please install mocha.
npm install -g mocha
mocha --reporter spec tests
Compile
- npm install -g gulp
- gulp
Changes
0.0.0
- Operating base to generate HTML tags.