About
Inline tagged templating and template compilation from text inputs and hierarchical data,
requires jQuery
with Select2.
Supports template (de)normalization, custom template format. Use it to build Underscore/Jade/Angularjs
templates dynamically or whatever else
you can think of. It's used by bipio
Try it
just start typing, 'Ctrl+i' opens the tag menu where you want the tag to appear.
Generates
How it works
Templar interpolates a select2 dropdown into your text for easy template variable selection, invoked with a keypress. Once invoked, it opens the dropdown so search away. Up/Down/Enter/Escape behaves intuitively. Attribute selection normalizes to a dot notation path or config controlled delimiter. Eg : toppings > cheese istoppings.cheese
in the computed
template.
To use, attach it to a target div
$('.someclass').templar(
{
tags: {
'toplevel' :
label : 'Top Level Label',
data : [
'sub selection 1',
'sub selection ..',
'sub selection (n)',
]
}
}
);
To extract the computed template :
// compute the template example.templar('computeTemplate'); // retrieve it alert(example.attr('data-template'));
or hook the event
example.on('templar-template', function(ev) { console.log('template is now ' + $(this).attr('data-template)); });
Config
Several config options are available for basic behavioral and template (de)normalizing customizations.name | description | example |
---|---|---|
tags |
hierarchical data, up to depth 2 only for now
no default |
tags : { 'toppings' : { 'label' : 'Toppings', 'data' : [ { label : "Cheezzzze", value : 'cheezz' }, 'cheese', 'tomatoes', 'mozzarella', 'mushrooms', 'pepperoni', 'onions' ] }, 'mood' : { label : 'Mood', data : [ 'fat', 'sassy' ] }, 'base' : { label : 'Base', data : [ 'thin', 'pie', 'superthick' ] } } |
template |
Template pattern string literal default 'value'. |
template : '[%value%]'
|
templateKey |
Template key literal. Value is interpolated into key literal. default 'value'. |
templateKey : 'value'
|
delimiter | Path Hierarchy Delimiter default '.' |
delimiter : '#'
|
data | Initial Template data |
data : 'Hello [%name%]!'
|
keyEvent | Delimiter key event callback, event as first argument. default: '['
keyEvent : function(ev) {
return ev.keyCode === 219;
}
|
keyEvent : function(ev) { return ev.shiftKey && ev.keyCode === 220; } |
character | Character helper, hacks out previous delmiter after variable selection default '[' |
character : '['
|