treant
Version:
Dependency free component library for the browser
40 lines (35 loc) • 987 B
JavaScript
var merge = require("../util/merge")
module.exports = fragment
fragment.options = {
variable: "f"
}
function fragment( html, compiler, compilerOptions ){
compilerOptions = merge(fragment.options, compilerOptions)
var render = null
return function( templateData ){
var temp = window.document.createElement("div")
if( typeof compiler == "function" && !render ){
render = compiler(html, compilerOptions)
}
if( render ){
try{
html = render(templateData)
}
catch( e ){
console.error("Error rendering fragment with context:", templateData)
console.error(render.toString())
console.error(e)
throw e
}
}
temp.innerHTML = html
var fragment = window.document.createDocumentFragment()
while( temp.childNodes.length ){
fragment.appendChild(temp.firstChild)
}
return fragment
}
}
fragment.render = function( html, templateData ){
return fragment(html)(templateData)
}