src/selectize.js
function(templateName, data) {
		var value, id, label;
		var html = '';
		var cache = false;
		var self = this;
		var regex_tag = /^[\t \r\n]*<([a-z][a-z0-9\-_]*(?:\:[a-z][a-z0-9\-_]*)?)/i;

		if (templateName === 'option' || templateName === 'item') {
			value = hash_key(data[self.settings.valueField]);
			cache = !!value;
		}

		// pull markup from cache if it exists
		if (cache) {
			if (!isset(self.renderCache[templateName])) {
				self.renderCache[templateName] = {};
			}
			if (self.renderCache[templateName].hasOwnProperty(value)) {
				return self.renderCache[templateName][value];
			}
		}

		// render markup
		html = $(self.settings.render[templateName].apply(this, [data, escape_html]));

		// add mandatory attributes
		if (templateName === 'option' || templateName === 'option_create') {
			if (!data[self.settings.disabledField]) {
				html.attr('data-selectable', '');
			}
		}
		else if (templateName === 'optgroup') {
			id = data[self.settings.optgroupValueField] || '';
			html.attr('data-group', id);
			if(data[self.settings.disabledField]) {
				html.attr('data-disabled', '');
			}
		}
		if (templateName === 'option' || templateName === 'item') {
			html.attr('data-value', value || '');
		}

		// update cache
		if (cache) {
			self.renderCache[templateName][value] = html[0];
		}

		return html[0];
	}
function(templateName, data) {
		var value, id, label;
		var html = '';
		var cache = false;
		var self = this;
		var regex_tag = /^[\t \r\n]*<([a-z][a-z0-9\-_]*(?:\:[a-z][a-z0-9\-_]*)?)/i;

		if (templateName === 'option' || templateName === 'item') {
			value = hash_key(data[self.settings.valueField]);
			cache = !!value;
		}

		// pull markup from cache if it exists
		if (cache) {
			if (!isset(self.renderCache[templateName])) {
				self.renderCache[templateName] = {};
			}
			if (self.renderCache[templateName].hasOwnProperty(value)) {
				return self.renderCache[templateName][value];
			}
		}

		// render markup
		html = $(self.settings.render[templateName].apply(this, [data, escape_html]));

		// add mandatory attributes
		if (templateName === 'option' || templateName === 'option_create') {
			if (!data[self.settings.disabledField]) {
				html.attr('data-selectable', '');
			}
		}
		else if (templateName === 'optgroup') {
			id = data[self.settings.optgroupValueField] || '';
			html.attr('data-group', id);
			if(data[self.settings.disabledField]) {
				html.attr('data-disabled', '');
			}
		}
		if (templateName === 'option' || templateName === 'item') {
			html.attr('data-value', value || '');
		}

		// update cache
		if (cache) {
			self.renderCache[templateName][value] = html[0];
		}

		return html[0];
	}
function ( templateName , data ) { var value , id , label ; var html = '' ; var cache = false ; var self = this ; var regex_tag = / ^[\t \r\n]*<([a-z][a-z0-9\-_]*(?:\:[a-z][a-z0-9\-_]*)?) / i ; if ( templateName === 'option' || templateName === 'item' ) { value = hash_key ( data [ self . settings . valueField ] ) ; cache = ! ! value ; } // pull markup from cache if it exists if ( cache ) { if ( ! isset ( self . renderCache [ templateName ] ) ) { self . renderCache [ templateName ] = { } ; } if ( self . renderCache [ templateName ] . hasOwnProperty ( value ) ) { return self . renderCache [ templateName ] [ value ] ; } } // render markup html = $ ( self . settings . render [ templateName ] . apply ( this , [ data , escape_html ] ) ) ; // add mandatory attributes if ( templateName === 'option' || templateName === 'option_create' ) { if ( ! data [ self . settings . disabledField ] ) { html . attr ( 'data-selectable' , '' ) ; } } else if ( templateName === 'optgroup' ) { id = data [ self . settings . optgroupValueField ] || '' ; html . attr ( 'data-group' , id ) ; if ( data [ self . settings . disabledField ] ) { html . attr ( 'data-disabled' , '' ) ; } } if ( templateName === 'option' || templateName === 'item' ) { html . attr ( 'data-value' , value || '' ) ; } // update cache if ( cache ) { self . renderCache [ templateName ] [ value ] = html [ 0 ] ; } return html [ 0 ] ; }
A helper method for rendering "item" and
"option" templates, given the data.

@param {string} templateName
@param {object} data
@returns {string}
A helper method for rendering item and option templates given the data .