* {@link #filters} array.
*/
this.filterFunc = function filterFunc(items) {
- let self = this;
- return this.filters.
- reduce(function r(res, filter) res.filter(function f(item) filter.call(self, item)),
- items);
+ return this.filters
+ .reduce((res, filter)
+ => res.filter((item) => filter.call(this, item)),
+ items);
};
/**
* @property {Array} An array of predicates on which to filter the
},
getRows: function getRows(start, end, doc) {
- let self = this;
let items = this.items;
let cache = this.cache.rows;
let step = start > end ? -1 : 1;
* for the new context. If a string is provided, it is
* interpreted as a method to access on *self*.
*/
- fork: function fork(name, offset, self, completer) {
- return this.forkapply(name, offset, self, completer, Array.slice(arguments, fork.length));
+ fork: function fork(name, offset, self, completer, ...args) {
+ return this.forkapply(name, offset, self, completer, args);
},
forkapply: function forkapply(name, offset, self, completer, args) {
return context;
},
- split: function split(name, obj, fn) {
- const self = this;
-
+ split: function split(name, obj, fn, ...args) {
let context = this.fork(name);
- function alias(prop) {
- context.__defineGetter__(prop, function get_() self[prop]);
- context.__defineSetter__(prop, function set_(val) self[prop] = val);
+ let alias = (prop) => {
+ context.__defineGetter__(prop, () => this[prop]);
+ context.__defineSetter__(prop, (val) => this[prop] = val);
}
alias("_cache");
alias("_completions");
context.hasItems = true;
this.hasItems = false;
if (fn)
- return fn.apply(obj || this, [context].concat(Array.slice(arguments, split.length)));
+ return fn.apply(obj || this, [context].concat(args));
return context;
},
* context.
*/
reset: function reset() {
- let self = this;
if (this.parent)
throw Error();
this.value = this._value;
this._caret = this.value.length;
}
- //for (let key in (k for ([k, v] in Iterator(self.contexts)) if (v.offset > this.caret)))
+ //for (let key in (k for ([k, v] in Iterator(this.contexts)) if (v.offset > this.caret)))
// delete this.contexts[key];
for each (let context in this.contexts) {
context.hasItems = false;
get options() modules.options,
// FIXME
- _runCompleter: function _runCompleter(name, filter, maxItems) {
+ _runCompleter: function _runCompleter(name, filter, maxItems, ...args) {
let context = modules.CompletionContext(filter);
context.maxItems = maxItems;
- let res = context.fork.apply(context, ["run", 0, this, name].concat(Array.slice(arguments, 3)));
+ let res = context.fork.apply(context, ["run", 0, this, name].concat(args));
if (res) {
if (Components.stack.caller.name === "runCompleter") // FIXME
return { items: res.map(function m(i) ({ item: i })) };
},
runCompleter: function runCompleter(name, filter, maxItems) {
- return this._runCompleter.apply(this, Array.slice(arguments))
+ return this._runCompleter.apply(this, arguments)
.items.map(function m(i) i.item);
},
- listCompleter: function listCompleter(name, filter, maxItems) {
+ listCompleter: function listCompleter(name, filter, maxItems, ...args) {
let context = modules.CompletionContext(filter || "");
context.maxItems = maxItems;
- context.fork.apply(context, ["list", 0, this, name].concat(Array.slice(arguments, 3)));
+ context.fork.apply(context, ["list", 0, this, name].concat(args));
context = context.contexts["/list"];
context.wait(null, true);
template.map(contexts, function m(context)
[template.completionRow(context.title, "CompTitle"),
template.map(context.items, function m(item) context.createRow(item), null, 100)])]);
- },
+ }
}),
////////////////////////////////////////////////////////////////////////////////
}, this);
},
- addUrlCompleter: function addUrlCompleter(opt) {
- let completer = Completion.UrlCompleter.apply(null, Array.slice(arguments));
- completer.args = Array.slice(arguments, completer.length);
- this.urlCompleters[opt] = completer;
+ addUrlCompleter: function addUrlCompleter(name, description, completer, ...args) {
+ let completer = Completion.UrlCompleter(name, description, completer);
+ completer.args = args;
+ this.urlCompleters[name] = completer;
},
autocomplete: curry(function autocomplete(provider, context) {
let words = context.filter.toLowerCase().split(/\s+/g);
context.hasItems = true;
context.completions = context.completions.filter(function f({ url, title })
- words.every(function e(w) (url + " " + title).toLowerCase().indexOf(w) >= 0))
+ words.every(function e(w) (url + " " + title).toLowerCase().indexOf(w) >= 0));
context.format = this.modules.bookmarks.format;
context.keys.extra = function k_extra(item) {
// catch(e){ if (!e.stack) e = Error(e); dump(e.fileName+":"+e.lineNumber+": "+e+"\n" + e.stack); }
-// vim: set fdm=marker sw=4 ts=4 et ft=javascript:
+// vim: set fdm=marker sw=4 sts=4 ts=8 et ft=javascript: