mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
b9d5bcee1c
Introduce the view_state object to ECMAScript with properties .uri and .plain and pass the current view_state to preformat hooks.
76 lines
1.9 KiB
JavaScript
76 lines
1.9 KiB
JavaScript
/* These are examples for the ELinks SpiderMonkey scripting interface.
|
|
* Place choice parts in a file named "hooks.js" in your ELinks configuration
|
|
* directory (~/.elinks).
|
|
*/
|
|
|
|
elinks.keymaps.main["@"] = function () {
|
|
elinks.location = elinks.location + "/..";
|
|
};
|
|
|
|
elinks.preformat_html_hooks = new Array();
|
|
elinks.preformat_html = function (cached, vs) {
|
|
for (var i in elinks.preformat_html_hooks)
|
|
if (!elinks.preformat_html_hooks[i](cached, vs))
|
|
return false;
|
|
|
|
return true;
|
|
};
|
|
|
|
elinks.goto_url_hooks = new Array();
|
|
elinks.goto_url_hook = function (url) {
|
|
for (var i in elinks.goto_url_hooks){
|
|
url = elinks.goto_url_hooks[i](url);
|
|
if (false === url) return false;
|
|
}
|
|
|
|
return url;
|
|
};
|
|
|
|
elinks.follow_url_hooks = new Array();
|
|
elinks.follow_url_hook = function (url) {
|
|
for (var i in elinks.follow_url_hooks) {
|
|
url = elinks.follow_url_hooks[i](url);
|
|
if (false === url) return false;
|
|
}
|
|
|
|
return url;
|
|
};
|
|
|
|
function root_w00t(cached, vs) {
|
|
cached.content = cached.content.replace(/root/g, "w00t");
|
|
return true;
|
|
};
|
|
elinks.preformat_html_hooks.push(root_w00t);
|
|
|
|
function mangle_deb_bugnumbers(cached, vs) {
|
|
if (!cached.uri.match(/^[a-z0-9]+:\/\/[a-z0-9A-Z.-]+debian\.org/)
|
|
&& !cached.uri.match(/changelog\.Debian/))
|
|
return true;
|
|
|
|
var num_re = /([0-9]+)/g;
|
|
var rewrite_closes_fn = function (str) {
|
|
return str.replace(num_re,
|
|
'<a href="http://bugs.debian.org/$1">$1</a>');
|
|
}
|
|
/* Debian Policy Manual 4.4 footnote 16 */
|
|
var closes_re = /closes:\s*(?:bug)?\#?\s?\d+(?:,\s*(?:bug)?\#?\s?\d+)*/gi;
|
|
|
|
cached.content = cached.content.replace(closes_re, rewrite_closes_fn);
|
|
|
|
return true;
|
|
}
|
|
elinks.preformat_html_hooks.push(mangle_deb_bugnumbers);
|
|
|
|
function block_pr0n(uri) {
|
|
if (uri.match(/pr0n/)) {
|
|
elinks.alert('No pr0n!');
|
|
return "";
|
|
}
|
|
|
|
return true;
|
|
}
|
|
elinks.follow_url_hooks.push(block_pr0n);
|
|
|
|
do_file(elinks.home + 'smartprefixes_bookmarks.js');
|
|
do_file(elinks.home + 'smartprefixes_classic.js');
|