File: /home/adventp/www/wp-content/plugins/js_composer/assets/js/lib/template.js
if ( !window.vc ) {
window.vc = {};
}
(function () {
'use strict';
vc.templateOptions = {
default: {
evaluate: /<%([\s\S]+?)%>/g,
interpolate: /<%=([\s\S]+?)%>/g,
escape: /<%-([\s\S]+?)%>/g
},
custom: {
evaluate: /<#([\s\S]+?)#>/g,
interpolate: /\{\{\{([\s\S]+?)\}\}\}/g,
escape: /\{\{([^\}]+?)\}\}(?!\})/g
}
};
// Underscore.js 1.8.3
// http://underscorejs.org
// (c) 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// Underscore may be freely distributed under the MIT license.
// When customizing `templateSettings`, if you don't want to define an
// interpolation, evaluation or escaping regex, we need one that is
// guaranteed not to match.
var noMatch = /(.)^/;
// Certain characters need to be escaped so that they can be put into a
// string literal.
var escapes = {
"'": "'",
'\\': '\\',
'\r': 'r',
'\n': 'n',
'\u2028': 'u2028',
'\u2029': 'u2029'
};
var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g;
var escapeChar = function ( match ) {
return '\\' + escapes[ match ];
};
/**
*
* @param text
* @param settings
* @returns Function
*/
vc.template = function ( text, settings ) {
settings = _.defaults( {}, settings, vc.templateOptions.default );
// Combine delimiters into one regular expression via alternation.
var matcher = RegExp( [
(settings.escape || noMatch).source,
(settings.interpolate || noMatch).source,
(settings.evaluate || noMatch).source
].join( '|' ) + '|$', 'g' );
// Compile the template source, escaping string literals appropriately.
var index = 0;
var source = "__p+='";
text.replace( matcher, function ( match, escape, interpolate, evaluate, offset ) {
source += text.slice( index, offset ).replace( escapeRegExp, escapeChar );
index = offset + match.length;
if ( escape ) {
source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
} else if ( interpolate ) {
source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
} else if ( evaluate ) {
source += "';\n" + evaluate + "\n__p+='";
}
// Adobe VMs need the match returned to produce the correct offset.
return match;
} );
source += "';\n";
// If a variable is not specified, place data values in local scope.
if ( !settings.variable ) {
source = 'with(obj||{}){\n' + source + '}\n';
}
source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n';
var render;
try {
/*jslint evil: true */
render = new Function( settings.variable || 'obj', '_', source );
} catch ( e ) {
e.source = source;
throw e;
}
var template = function ( data ) {
return render.call( this, data, _ );
};
// Provide the compiled source as a convenience for precompilation.
var argument = settings.variable || 'obj';
template.source = 'function(' + argument + '){\n' + source + '}';
return template;
};
})();