rule
Version:
Coffeescript friendly css selector based templating
78 lines (68 loc) • 1.66 kB
text/coffeescript
console.time('simple')
simple = new Rule
'.content': ->
simple.render
content: 'simple',
document.querySelector '.simple'
console.timeEnd('simple')
console.time('book')
book = new Rule
'.title': ->
'.author':
'.name':
'.first': ->.first
'.last': ->.last
book.render
title: 'The Hobbit'
author:
first: 'J. R. R.'
last: 'Tolkien',
document.querySelector '.book'
console.timeEnd('book')
console.time('list')
itemRule = new Rule
'.content': -> ? 'default',
document.querySelector '.list li'
listRule = new Rule
'': ->itemRule.render item for item in
listRule.render
list: [{content: 'hello'}, {content: 'world'}, {}],
document.querySelector '.list'
console.timeEnd('list')
console.time('recursive')
listItem = new Rule
'': ->
'>': ->if ? then recursive.render @
document.querySelector '.location'
recursive = new Rule
'': ->listItem.render item for item in
document.querySelector '.recursive'
recursive.render
list:
[
{
location: 'USA'
list:
[
{
location: 'California'
list:
[
{ location: 'San Diego' }
{ location: 'San Francisco' }
{ location: 'San Jose' }
]
}
{
location: 'Nevada'
list:
[
{ location: 'Reno' }
{ location: 'Las Vegas' }
]
}
]
}
]
document.querySelector '.recursive'
console.timeEnd('recursive')