mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-19 23:57:59 +01:00
General cleanup related to last commit.
This commit is contained in:
@@ -101,7 +101,7 @@ function Buffer() //{{{
|
||||
if (win.scrollMaxX > 0 || win.scrollMaxY > 0)
|
||||
return win;
|
||||
|
||||
for (let frame in util.Array.iterator(win.frames))
|
||||
for (let frame in util.Array.itervalues(win.frames))
|
||||
if (frame.scrollMaxX > 0 || frame.scrollMaxY > 0)
|
||||
return frame;
|
||||
|
||||
@@ -174,17 +174,7 @@ function Buffer() //{{{
|
||||
}
|
||||
catch (e) { liberator.reportError(e) }
|
||||
},
|
||||
completer: function(context) {
|
||||
context.anchored = false;
|
||||
context.generate = function() {
|
||||
let names = util.Array.uniq(
|
||||
util.Array.flatten(
|
||||
'more1 more2 more3 more4 more5 unicode'.split(' ').map(function(key)
|
||||
options.getPref('intl.charsetmenu.browser.' + key).split(', '))));
|
||||
let bundle = document.getElementById('liberator-charset-bundle');
|
||||
return names.map(function(name) [name, bundle.getString(name.toLowerCase() + '.title')])
|
||||
};
|
||||
}
|
||||
completer: function(context) completion.charset(context)
|
||||
});
|
||||
|
||||
// FIXME: Most certainly belongs elsewhere.
|
||||
@@ -803,7 +793,7 @@ function Buffer() //{{{
|
||||
const ACCESS_READ = Ci.nsICache.ACCESS_READ;
|
||||
let cacheKey = doc.location.toString().replace(/#.*$/, "");
|
||||
|
||||
for (let proto in util.Array.iterator(["HTTP", "FTP"]))
|
||||
for (let proto in util.Array.itervalues(["HTTP", "FTP"]))
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
@@ -324,7 +324,7 @@ function Commands() //{{{
|
||||
__iterator__: function ()
|
||||
{
|
||||
let sorted = exCommands.sort(function (a, b) a.name > b.name);
|
||||
return util.Array.iterator(sorted);
|
||||
return util.Array.itervalues(sorted);
|
||||
},
|
||||
|
||||
add: function (names, description, action, extra)
|
||||
@@ -480,7 +480,7 @@ function Commands() //{{{
|
||||
argCount = "*";
|
||||
|
||||
var args = []; // parsed options
|
||||
args.__iterator__ = function () util.Array.iterator2(this);
|
||||
args.__iterator__ = function () util.Array.iteritems(this);
|
||||
args.string = str; // for access to the unparsed string
|
||||
args.literalArg = "";
|
||||
|
||||
@@ -919,12 +919,10 @@ function Commands() //{{{
|
||||
{
|
||||
command: this.name,
|
||||
bang: true,
|
||||
// Yeah, this is a bit scary. Perhaps I'll fix it when I'm
|
||||
// awake.
|
||||
options: util.Array.assocToObj(
|
||||
util.map({ argCount: "-nargs", bang: "-bang", count: "-count" },
|
||||
function ([k, v]) k in cmd && cmd[k] != "0" && [v, typeof cmd[k] == "boolean" ? null : cmd[k]])
|
||||
.filter(util.identity)),
|
||||
options: util.Array.toObject(
|
||||
[[v, typeof cmd[k] == "boolean" ? null : cmd[k]]
|
||||
for ([k, v] in Iterator({ argCount: "-nargs", bang: "-bang", count: "-count" }))
|
||||
if (k in cmd && cmd[k] != "0")]),
|
||||
arguments: [cmd.name],
|
||||
literalArg: cmd.replacementText
|
||||
}
|
||||
|
||||
@@ -291,7 +291,7 @@ CompletionContext.prototype = {
|
||||
set completions(items)
|
||||
{
|
||||
// Accept a generator
|
||||
if (!("length" in items))
|
||||
if ({}.toString.call(items) != '[object Array]')
|
||||
items = [x for (x in Iterator(items))];
|
||||
delete this.cache.filtered;
|
||||
delete this.cache.filter;
|
||||
@@ -1454,6 +1454,18 @@ function Completion() //{{{
|
||||
});
|
||||
},
|
||||
|
||||
charset: function(context) {
|
||||
context.anchored = false;
|
||||
context.generate = function() {
|
||||
let names = util.Array(
|
||||
'more1 more2 more3 more4 more5 unicode'.split(' ').map(function(key)
|
||||
options.getPref('intl.charsetmenu.browser.' + key).split(', ')))
|
||||
.flatten().uniq();
|
||||
let bundle = document.getElementById('liberator-charset-bundle');
|
||||
return names.map(function(name) [name, bundle.getString(name.toLowerCase() + '.title')]);
|
||||
};
|
||||
},
|
||||
|
||||
colorScheme: function colorScheme(context)
|
||||
{
|
||||
let colors = [];
|
||||
|
||||
@@ -180,7 +180,7 @@ function AutoCommands() //{{{
|
||||
|
||||
return {
|
||||
|
||||
__iterator__: function () util.Array.iterator(store),
|
||||
__iterator__: function () util.Array.itervalues(store),
|
||||
|
||||
/**
|
||||
* Adds a new autocommand. <b>cmd</b> will be executed when one of the
|
||||
|
||||
@@ -129,7 +129,7 @@ const modes = (function () //{{{
|
||||
|
||||
NONE: 0,
|
||||
|
||||
__iterator__: function () util.Array.iterator(this.all),
|
||||
__iterator__: function () util.Array.itervalues(this.all),
|
||||
|
||||
get all() mainModes.slice(),
|
||||
|
||||
|
||||
@@ -488,10 +488,10 @@ function Styles(name, store, serial)
|
||||
return namespace + "@-moz-document " + selectors + "{\n" + css + "\n}\n";
|
||||
}
|
||||
}
|
||||
let (array = util.Array)
|
||||
let (array = utiltte.Array)
|
||||
{
|
||||
Styles.prototype = {
|
||||
get sites() array.uniq(array.flatten([v.sites for ([k, v] in this.userSheets)])),
|
||||
get sites() array([v.sites for ([k, v] in this.userSheets)]).flatten().uniq(),
|
||||
completeSite: function (context, content)
|
||||
{
|
||||
let compl = [];
|
||||
|
||||
@@ -15,7 +15,7 @@ const template = {
|
||||
map: function map(iter, fn, sep, interruptable)
|
||||
{
|
||||
if (iter.length) // FIXME: Kludge?
|
||||
iter = util.Array.iterator(iter);
|
||||
iter = util.Array.itervalues(iter);
|
||||
let ret = <></>;
|
||||
let n = 0;
|
||||
for each (let i in Iterator(iter))
|
||||
|
||||
@@ -1867,7 +1867,7 @@ function ItemList(id) //{{{
|
||||
|
||||
for (let [i, row] in Iterator(context.getRows(start, end, doc)))
|
||||
nodes[i] = row;
|
||||
for (let [i, row] in util.Array.iterator2(nodes))
|
||||
for (let [i, row] in util.Array.iteritems(nodes))
|
||||
{
|
||||
if (!row)
|
||||
continue;
|
||||
@@ -2197,7 +2197,7 @@ function StatusLine() //{{{
|
||||
// tab numbers set
|
||||
if (options.get("guioptions").has("n", "N"))
|
||||
{
|
||||
for (let [i, tab] in util.Array.iterator2(getBrowser().mTabs))
|
||||
for (let [i, tab] in util.Array.iteritems(getBrowser().mTabs))
|
||||
tab.setAttribute("ordinal", i + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -33,96 +33,6 @@ const NS = Namespace("liberator", "http://vimperator.org/namespaces/liberator");
|
||||
default xml namespace = XHTML;
|
||||
|
||||
const util = { //{{{
|
||||
|
||||
/**
|
||||
* Array utility methods.
|
||||
* @singleton
|
||||
*/
|
||||
Array: {
|
||||
/**
|
||||
* Converts an array to an object. As in lisp, an assoc is an
|
||||
* array of key-value pairs, which maps directly to an object,
|
||||
* as such:
|
||||
* [["a", "b"], ["c", "d"]] -> { a: "b", c: "d" }
|
||||
*
|
||||
* @param {Array[]} assoc
|
||||
* @... {string} 0 - Key
|
||||
* @... 1 - Value
|
||||
*/
|
||||
assocToObj: function assocToObj(assoc)
|
||||
{
|
||||
let obj = {};
|
||||
assoc.forEach(function ([k, v]) { obj[k] = v });
|
||||
return obj;
|
||||
},
|
||||
|
||||
/**
|
||||
* Flattens an array, such that all elements of the array are
|
||||
* joined into a single array:
|
||||
* [["foo", ["bar"]], ["baz"], "quux"] -> ["foo", ["bar"], "baz", "quux"]
|
||||
*
|
||||
* @param {Array} ary
|
||||
* @returns {Array}
|
||||
*/
|
||||
flatten: function flatten(ary) Array.concat.apply([], ary),
|
||||
|
||||
/**
|
||||
* Returns an Iterator for an array's values.
|
||||
*
|
||||
* @param {Array} ary
|
||||
* @returns {Iterator(Object)}
|
||||
*/
|
||||
iterator: function iterator(ary)
|
||||
{
|
||||
let length = ary.length;
|
||||
for (let i = 0; i < length; i++)
|
||||
yield ary[i];
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns an Iterator for an array's indices and values.
|
||||
*
|
||||
* @param {Array} ary
|
||||
* @returns {Iterator([{number}, {Object}])}
|
||||
*/
|
||||
iterator2: function (ary)
|
||||
{
|
||||
let length = ary.length;
|
||||
for (let i = 0; i < length; i++)
|
||||
yield [i, ary[i]];
|
||||
},
|
||||
|
||||
/**
|
||||
* Filters out all duplicates from an array. If
|
||||
* <b>unsorted</b> is false, the array is sorted before
|
||||
* duplicates are removed.
|
||||
*
|
||||
* @param {Array} ary
|
||||
* @param {boolean} unsorted
|
||||
* @returns {Array}
|
||||
*/
|
||||
uniq: function uniq(ary, unsorted)
|
||||
{
|
||||
let ret = [];
|
||||
if (unsorted)
|
||||
{
|
||||
for (let [,item] in Iterator(ary))
|
||||
if (ret.indexOf(item) == -1)
|
||||
ret.push(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (let [,item] in Iterator(ary.sort()))
|
||||
{
|
||||
if (item != last || !ret.length)
|
||||
ret.push(item);
|
||||
var last = item;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns a shallow copy of <b>obj</b>.
|
||||
*
|
||||
@@ -730,6 +640,106 @@ const util = { //{{{
|
||||
}
|
||||
}; //}}}
|
||||
|
||||
/**
|
||||
* Array utility methods.
|
||||
* @singleton
|
||||
*/
|
||||
util.Array = function Array(ary) {
|
||||
var obj = {
|
||||
__proto__: ary,
|
||||
__iterator__: function() this.iteritems(),
|
||||
__noSuchMethod__: function (meth, args) {
|
||||
let res = util.Array(util.Array[meth].apply(null, [this.__proto__].concat(args)))
|
||||
if (res instanceof Array)
|
||||
return util.Array(res);
|
||||
return res;
|
||||
}
|
||||
};
|
||||
return obj;
|
||||
}
|
||||
/**
|
||||
* Converts an array to an object. As in lisp, an assoc is an
|
||||
* array of key-value pairs, which maps directly to an object,
|
||||
* as such:
|
||||
* [["a", "b"], ["c", "d"]] -> { a: "b", c: "d" }
|
||||
*
|
||||
* @param {Array[]} assoc
|
||||
* @... {string} 0 - Key
|
||||
* @... 1 - Value
|
||||
*/
|
||||
util.Array.toObject = function toObject(assoc)
|
||||
{
|
||||
let obj = {};
|
||||
assoc.forEach(function ([k, v]) { obj[k] = v });
|
||||
return obj;
|
||||
};
|
||||
|
||||
/**
|
||||
* Flattens an array, such that all elements of the array are
|
||||
* joined into a single array:
|
||||
* [["foo", ["bar"]], ["baz"], "quux"] -> ["foo", ["bar"], "baz", "quux"]
|
||||
*
|
||||
* @param {Array} ary
|
||||
* @returns {Array}
|
||||
*/
|
||||
util.Array.flatten = function flatten(ary) Array.concat.apply([], ary),
|
||||
|
||||
/**
|
||||
* Returns an Iterator for an array's values.
|
||||
*
|
||||
* @param {Array} ary
|
||||
* @returns {Iterator(Object)}
|
||||
*/
|
||||
util.Array.itervalues = function itervalues(ary)
|
||||
{
|
||||
let length = ary.length;
|
||||
for (let i = 0; i < length; i++)
|
||||
yield ary[i];
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an Iterator for an array's indices and values.
|
||||
*
|
||||
* @param {Array} ary
|
||||
* @returns {Iterator([{number}, {Object}])}
|
||||
*/
|
||||
util.Array.iteritems = function iteritems(ary)
|
||||
{
|
||||
let length = ary.length;
|
||||
for (let i = 0; i < length; i++)
|
||||
yield [i, ary[i]];
|
||||
};
|
||||
|
||||
/**
|
||||
* Filters out all duplicates from an array. If
|
||||
* <b>unsorted</b> is false, the array is sorted before
|
||||
* duplicates are removed.
|
||||
*
|
||||
* @param {Array} ary
|
||||
* @param {boolean} unsorted
|
||||
* @returns {Array}
|
||||
*/
|
||||
util.Array.uniq = function uniq(ary, unsorted)
|
||||
{
|
||||
let ret = [];
|
||||
if (unsorted)
|
||||
{
|
||||
for (let [,item] in Iterator(ary))
|
||||
if (ret.indexOf(item) == -1)
|
||||
ret.push(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (let [,item] in Iterator(ary.sort()))
|
||||
{
|
||||
if (item != last || !ret.length)
|
||||
ret.push(item);
|
||||
var last = item;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
|
||||
function Struct()
|
||||
{
|
||||
let self = this instanceof Struct ? this : new Struct();
|
||||
|
||||
Reference in New Issue
Block a user