const
CodeAssemblyLine = require("code-assembly-line")
, tplEngine = new CodeAssemblyLine()
;
// --- PREPARE RESOURCES
const templateLib = {
'a' : '<a href="{{href}}">{{text}}</a>'
, 'li': '<li{{~~_attr}}>{{text}}</li>'
, 'ul': '<ul>{{text}}</ul>'
};
// processes
const doNav = [
{ do: 'alterTemplate', tpl: 'a', data: { 'href': 'link'} }
, { do: 'draw', tpl: 'a', missData: '_hide' }
, { do: 'set', as: 'text' }
, { do: 'add', select:'first', data: { 'className': 'first'} }
, { do: 'draw', tpl: 'li' }
, { do: 'block', }
, { do: 'set', as: 'text' }
, { do: 'draw', tpl: 'ul' }
];
const saveNav = [{do:'block', name: 'nav' }]
// --- LOAD RESOURCES
tplEngine
.insertTemplate ( templateLib )
.insertProcess ( doNav, 'nav' )
.insertProcess ( saveNav, 'saveNav')
// -- PROCESS-DATA FOR NAVIGATION
const myNavData = [
{ text: 'Home', link: 'home.html' }
, { text: 'Services', link: 'services.html' }
, { text: 'About', link: 'about.html' }
, { text: 'Just text' } // Ignored - no link. Look 2 row of 'doNav' -> missData: '_hide'
, { text: 'Contact', link: 'contact.html' }
];
// --- RENDER AND RETREAVE
tplEngine.run (['nav','saveNav'], myNavData )
tplEngine.getBlock ( 'nav' )