📜 ⬆️ ⬇️

kidomi: building DOM objects on the fly

One rainy autumn evening, I had the idea that I had never written JavaScript code following the canons of test-driven development (TDD). Down and Out trouble started! The result of the work was a small template library working on the principle “JSON at the input, HTMLElement or just a DOM object at the output”.

From the tools used: CoffeeScript , QUnit , PhantomJS , Google Closure compiler , and going all this with the help of the good old GNU Make . The article is for everyone who is interested in the library and for those who are superficially familiar with the above-listed technologies and would like to see them in their work.


What was the result?


elem = kidomi( ['div#main.content', ['span', {style: {color: 'blue'}}, 'Select file'], ['form', { name: 'inputName', action: 'getform.php', method: 'get'}, 'Username: ', ['input', {'type': 'text', 'name': 'user'}], ['input', {'type': 'submit', 'value': 'Submit'}]]]) 

Where elem is an HTMLElement object that looks like:
')
 <div id="main" class="content"> <span style="color: blue;">Select file</span> <form name="inputName" action="getform.php" method="get"> Username: <input type="text" name="user"></input> <input type="submit" value="Submit"></input> </form> </div> 

Another example in which an element is first created , onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
 ,  onclick   ,       : 

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!

, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!

, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!

, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!

, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
 ,  onclick   ,       : 

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
 ,  onclick   ,       : 

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
 ,  onclick   ,       : 

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
 ,  onclick   ,       : 

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!

, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!

, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
 ,  onclick   ,       : 

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
 ,  onclick   ,       : 

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
 ,  onclick   ,       : 

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
  1. , onclick , :

    button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
    jquery-haml , kidomi ClojureScript- dommy .

    -?
    kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

    CoffeeScript
    :

    window['kidomi'] = kidomi = (data) -> ...
    , CoffeeScript: - - . --bare , ?

    (function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

    :

    window['kidomi'] = # window.kidomi =
    Google Closure, "" , window.kidomi =

    , :

    kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

    , , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


    TDD? , - . , TDD !

    , kidomi QUnit . :

    test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

    :

    kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

    , kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

    de=k=function(a){return"string"===typeof a||a instanceof String};
    , . , qunit.js - , test , module , ok .. .

    , , min.js , - . - .

    kidomi 3 :

    kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

    PhantomJS
    , PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


    Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

    Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


    , - . kidomi . . , , !
    !
  2. , onclick , :

    button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
    jquery-haml , kidomi ClojureScript- dommy .

    -?
    kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

    CoffeeScript
    :

    window['kidomi'] = kidomi = (data) -> ...
    , CoffeeScript: - - . --bare , ?

    (function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

    :

    window['kidomi'] = # window.kidomi =
    Google Closure, "" , window.kidomi =

    , :

    kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

    , , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


    TDD? , - . , TDD !

    , kidomi QUnit . :

    test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

    :

    kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

    , kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

    de=k=function(a){return"string"===typeof a||a instanceof String};
    , . , qunit.js - , test , module , ok .. .

    , , min.js , - . - .

    kidomi 3 :

    kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

    PhantomJS
    , PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


    Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

    Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


    , - . kidomi . . , , !
    !
  3. , onclick , :

    button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
    jquery-haml , kidomi ClojureScript- dommy .

    -?
    kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

    CoffeeScript
    :

    window['kidomi'] = kidomi = (data) -> ...
    , CoffeeScript: - - . --bare , ?

    (function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

    :

    window['kidomi'] = # window.kidomi =
    Google Closure, "" , window.kidomi =

    , :

    kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

    , , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


    TDD? , - . , TDD !

    , kidomi QUnit . :

    test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

    :

    kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

    , kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

    de=k=function(a){return"string"===typeof a||a instanceof String};
    , . , qunit.js - , test , module , ok .. .

    , , min.js , - . - .

    kidomi 3 :

    kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

    PhantomJS
    , PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


    Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

    Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


    , - . kidomi . . , , !
    !
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!
, onclick , :

button = kidomi(['a.button', {href: '#'}]); button.onclick = function() { alert('Hello world!'); }; elem = kidomi(['div', ['span', 'Click this button:'], button]);
jquery-haml , kidomi ClojureScript- dommy .

-?
kidomi CoffeeScript. Google Closure (ADVANCED_MODE) . -. .. PhantomJS. make.

CoffeeScript
:

window['kidomi'] = kidomi = (data) -> ...
, CoffeeScript: - - . --bare , ?

(function() { /* ... */ window['kidomi'] = kidomi = function(data) { /* ... */ } /* ... */ }).call(this);

:

window['kidomi'] = # window.kidomi =
Google Closure, "" , window.kidomi =

, :

kidomi.makeElementFromTagData = makeElementFromTagData = (tagData) -> # ... kidomi.addAttributes = addAttributes = (elem, data) -> # ... # ..

, , "" - kidomi . : ( CoffeeScript @name , this.name ). A , . kidomi.functionName .


TDD? , - . , TDD !

, kidomi QUnit . :

test('isString', -> ok(kidomi.isString('')) ok(not kidomi.isString({})) ok(not kidomi.isString([])) ok(not kidomi.isString(10)))

:

kidomi.isString = isString = (s) -> typeof(s) == 'string' or s instanceof(String);

, kidomi.js, Closure kidomi.min.js. - . , kidomi . , isString(s)

de=k=function(a){return"string"===typeof a||a instanceof String};
, . , qunit.js - , test , module , ok .. .

, , min.js , - . - .

kidomi 3 :

kidomi.js. . kidomi.js. . kidomi() kidomi.min.js. .

PhantomJS
, PhantomJS - WebKit JS-API. PhantomJS QUnit : 0 () 1 () . , .


Rake , Maven , Grunt .., "" (, JavaScript). Make , , "!".

Makefile (build targets): ${BUILD_DIR}, $(BUILD_DIR)/kidomi.js $(BUILD_DIR)/kidomi.min.js ( all, clean, .PHONY ..). Makefile' Makefile.testsuite.mk .


, - . kidomi . . , , !
!

Source: https://habr.com/ru/post/204506/


All Articles