jquery-textcomplete
Version:
[](http://badge.fury.io/js/jquery-textcomplete) [](http://badge.fury.io/bo/jquery-textcomplete) [ • 1.22 kB
JavaScript
+function ($) {
'use strict';
// Memoize a search function.
var memoize = function (func) {
var memo = {};
return function (term, callback) {
if (memo[term]) {
callback(memo[term]);
} else {
func.call(this, term, function (data) {
memo[term] = (memo[term] || []).concat(data);
callback.apply(null, arguments);
});
}
};
};
function Strategy(options) {
$.extend(this, options);
if (this.cache) { this.search = memoize(this.search); }
}
Strategy.parse = function (strategiesArray, params) {
return $.map(strategiesArray, function (strategy) {
var strategyObj = new Strategy(strategy);
strategyObj.el = params.el;
strategyObj.$el = params.$el;
return strategyObj;
});
};
$.extend(Strategy.prototype, {
// Public properties
// -----------------
// Required
match: null,
replace: null,
search: null,
// Optional
id: null,
cache: false,
context: function () { return true; },
index: 2,
template: function (obj) { return obj; },
idProperty: null
});
$.fn.textcomplete.Strategy = Strategy;
}(jQuery);