mirror of
https://github.com/rkd77/elinks.git
synced 2024-11-04 08:17:17 -05:00
b73cb9d8d0
It will handle searching and going to the different views (summary, log, tree, etc)
220 lines
7.3 KiB
JavaScript
220 lines
7.3 KiB
JavaScript
/* Hooks for the ELinks SEE browser scripting
|
|
*
|
|
* Copyright (c) Jonas Fonseca, 2005
|
|
*/
|
|
|
|
function quit() {
|
|
// ELinks.write("quiting ... " + ELinks.version);
|
|
}
|
|
|
|
/*********************************************************************
|
|
* goto_url(url, current_url)
|
|
*********************************************************************/
|
|
|
|
var goto_url_hooks = []
|
|
|
|
function goto_url(url, current_url)
|
|
{
|
|
var context = {
|
|
url: url,
|
|
current_url: current_url ? current_url : ""
|
|
}
|
|
|
|
for (var i = 0; i < goto_url_hooks.length; i++)
|
|
if (goto_url_hooks[i](context, current_url))
|
|
break
|
|
|
|
return context.url
|
|
}
|
|
|
|
// Don't take localhost as directory name
|
|
function expand_localhost(context)
|
|
{
|
|
if (context.url.match(/localhost/)) {
|
|
context.url = "http://" + context.url + "/"
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
goto_url_hooks.push(expand_localhost)
|
|
|
|
// You can write smt like "gg" to goto URL dialog and it'll go to google.com.
|
|
// Note that this is obsoleted by the URI rewrite plugin.
|
|
|
|
var dumbprefixes = {
|
|
arc: "http://web.archive.org/web/*/%c",
|
|
b: "http://babelfish.altavista.com/babelfish/tr",
|
|
bz: "http://bugzilla.elinks.or.cz",
|
|
bug: "http://bugzilla.elinks.or.cz",
|
|
d: "http://www.dict.org",
|
|
g: "http://www.google.com/",
|
|
gg: "http://www.google.com/",
|
|
go: "http://www.google.com/",
|
|
fm: "http://www.freshmeat.net/",
|
|
sf: "http://www.sourceforge.net/",
|
|
dbug: "http://bugs.debian.org/",
|
|
dpkg: "http://packages.debian.org/",
|
|
pycur: "http://www.python.org/doc/current/",
|
|
pydev: "http://www.python.org/dev/doc/devel/",
|
|
pyhelp: "http://starship.python.net/crew/theller/pyhelp.cgi",
|
|
pyvault: "http://www.vex.net/parnassus/",
|
|
e2: "http://www.everything2.org/",
|
|
sd: "http://www.slashdot.org/",
|
|
vhtml: "http://validator.w3.org/check?uri=%c",
|
|
vcss: "http://jigsaw.w3.org/css-validator/validator?uri=%c"
|
|
}
|
|
|
|
function expand_dumbprefix(context, current_url)
|
|
{
|
|
if (dumbprefixes[context.url]) {
|
|
context.url = dumbprefixes[context.url].replace(/%c/, current_url)
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
goto_url_hooks.push(expand_dumbprefix)
|
|
|
|
function gmane(url)
|
|
{
|
|
var match = url.match(/([^\s]+)\s+(.*)$/)
|
|
var group = match[1]
|
|
var words = match[2]
|
|
|
|
if (!words) return null
|
|
|
|
return "http://search.gmane.org/search.php?query=" + words + "&group=" + group
|
|
}
|
|
|
|
function gitweb(base_url)
|
|
{
|
|
return function (arguments) {
|
|
var url = base_url
|
|
var match = arguments.match(/^(search|summary|shortlog|log|commit|commitdiff|tree)(\s(.*))?/)
|
|
|
|
if (match[1])
|
|
url += ';a=' + match[1]
|
|
else
|
|
url += ';a=summary'
|
|
|
|
if (match[1] == 'search' && match[3])
|
|
url += ';s=' + escape(match[3])
|
|
|
|
return url
|
|
}
|
|
}
|
|
|
|
function bugzilla (base_url)
|
|
{
|
|
return function (arguments) {
|
|
if (!arguments || arguments == '')
|
|
return base_url
|
|
|
|
if (arguments.match(/^[\d]+$/))
|
|
return base_url + 'show_bug.cgi?id=' + arguments
|
|
|
|
return base_url + 'buglist.cgi?short_desc_type=allwordssubstr'
|
|
+ '&short_desc=' + escape(arguments)
|
|
}
|
|
}
|
|
|
|
|
|
var smartprefixes = {
|
|
arc: "http://web.archive.org/web/*/%s",
|
|
bug: bugzilla('http://bugzilla.elinks.or.cz/'),
|
|
cambridge: "http://dictionary.cambridge.org/results.asp?searchword=%s",
|
|
cliki: "http://www.cliki.net/admin/search?words: %s",
|
|
d: "http://www.dict.org/bin/Dict?Query: %s&Form=Dict1&Strategy=*&Database=*&submit=Submit+query",
|
|
dmoz: "http://search.dmoz.org/cgi-bin/search?search=%s",
|
|
foldoc: "http://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?%s",
|
|
g: "http://www.google.com/search?q=%s&btnG=Google+Search",
|
|
gd: "http://www.google.com/search?q=%s&cat=gwd/Top",
|
|
gg: "http://www.google.com/search?q=%s&btnG=Google+Search",
|
|
// Whose idea was it to use 'gg' for websearches? -- Miciah
|
|
//gg = "http://groups.google.com/groups?q=%s",
|
|
gi: "http://images.google.com/images?q=%s",
|
|
gitweb: gitweb("http://pasky.or.cz/gitweb.cgi?p=elinks.git"),
|
|
gmane: gmane,
|
|
gn: "http://news.google.com/news?q=%s",
|
|
go: "http://www.google.com/search?q=%s&btnG=Google+Search",
|
|
gwho: "http://www.googlism.com/?ism=%s&name=1",
|
|
gwhat: "http://www.googlism.com/?ism=%s&name=2",
|
|
gwhere: "http://www.googlism.com/?ism=%s&name=3",
|
|
gwhen: "http://www.googlism.com/?ism=%s&name=4",
|
|
fm: "http://www.freshmeat.net/search/?q=%s",
|
|
savannah: "http://savannah.nongnu.org/search/?words=%s&type_of_search=soft&exact=1",
|
|
sf: "http://sourceforge.net/search/?q=%s",
|
|
sfp: "http://sourceforge.net/projects/%s",
|
|
sd: "http://www.slashdot.org/search.pl?query=%s",
|
|
sdc: "http://www.slashdot.org/search.pl?query=%s&op=comments",
|
|
sdu: "http://www.slashdot.org/search.pl?query=%s&op=users",
|
|
sdp: "http://www.slashdot.org/search.pl?query=%s&op=polls",
|
|
sdj: "http://www.slashdot.org/search.pl?query=%s&op=journals",
|
|
dbug: "http://bugs.debian.org/%s",
|
|
dpkg: "http://packages.debian.org/%s",
|
|
emacs: "http://www.emacswiki.org/cgi-bin/wiki.pl?search=%s",
|
|
lyrics: "http://music.lycos.com/lyrics/results.asp?QT=L&QW=%s",
|
|
lxr: "http://lxr.linux.no/ident?i=%s",
|
|
leo: "http://dict.leo.org/?search=%s",
|
|
onelook: "http://onelook.com/?w=%s&ls=a",
|
|
py: "http://starship.python.net/crew/theller/pyhelp.cgi?keyword=%s&version=current",
|
|
pydev: "http://starship.python.net/crew/theller/pyhelp.cgi?keyword=%s&version=devel",
|
|
pyvault: "http://py.vaults.ca/apyllo.py?find=%s",
|
|
e2: "http://www.everything2.org/?node=%s",
|
|
encz: "http://www.slovnik.cz/bin/ecd?ecd_il=1&ecd_vcb=%s&ecd_trn=translate&ecd_trn_dir=0&ecd_lines=15&ecd_hptxt=0",
|
|
czen: "http://www.slovnik.cz/bin/ecd?ecd_il=1&ecd_vcb=%s&ecd_trn=translate&ecd_trn_dir=1&ecd_lines=15&ecd_hptxt=0",
|
|
dict: "http://dictionary.reference.com/search?q=%s",
|
|
thes: "http://thesaurus.reference.com/search?q=%s",
|
|
a: "http://acronymfinder.com/af-query.asp?String=exact&Acronym=%s",
|
|
imdb: "http://imdb.com/Find?%s",
|
|
mw: "http://www.m-w.com/cgi-bin/dictionary?book=Dictionary&va=%s",
|
|
mwt: "http://www.m-w.com/cgi-bin/thesaurus?book=Thesaurus&va=%s",
|
|
whatis: "http://uptime.netcraft.com/up/graph/?host=%s",
|
|
wiki: "http://www.wikipedia.org/w/wiki.phtml?search=%s",
|
|
wn: "http://www.cogsci.princeton.edu/cgi-bin/webwn1.7.1?stage=1&word=%s",
|
|
// rfc by number
|
|
rfc: "http://www.rfc-editor.org/rfc/rfc%s.txt",
|
|
// rfc search
|
|
rfcs: "http://www.rfc-editor.org/cgi-bin/rfcsearch.pl?searchwords=%s&format=http&abstract=abson&keywords=keyon&num=25",
|
|
cr: "http://www.rfc-editor.org/cgi-bin/rfcsearch.pl?searchwords=%s&format=http&abstract=abson&keywords=keyon&num=25",
|
|
// Internet Draft search
|
|
rfcid: "http://www.rfc-editor.org/cgi-bin/idsearch.pl?searchwords=%s&format=http&abstract=abson&keywords=keyon&num=25",
|
|
urbandict: "http://www.urbandictionary.com/define.php?term=%s",
|
|
id: "http://www.rfc-editor.org/cgi-bin/idsearch.pl?searchwords=%s&format=http&abstract=abson&keywords=keyon&num=25",
|
|
draft: "http://www.rfc-editor.org/cgi-bin/idsearch.pl?searchwords=%s&format=http&abstract=abson&keywords=keyon&num=25"
|
|
}
|
|
|
|
|
|
function expand_smartprefix(context, current_url)
|
|
{
|
|
var match = context.url.match(/^([^:\s]+)(:|\s)\s*(.*)\s*$/)
|
|
|
|
if (match && match[1] && match[3]) {
|
|
var nick = match[1]
|
|
var val = match[3]
|
|
|
|
if (smartprefixes[nick]) {
|
|
if (typeof smartprefixes[nick] == 'string') {
|
|
context.url = smartprefixes[nick].replace(/%s/, escape(val))
|
|
return true
|
|
|
|
} else if (typeof smartprefixes[nick] == 'function') {
|
|
context.url = smartprefixes[nick](val)
|
|
return true
|
|
|
|
} else {
|
|
ELinks.write('smartprefix "' + nick + '" has unsupported type "' + typeof smartprefixes[nick] + '".')
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
|
|
// Unmatched.
|
|
return false
|
|
}
|
|
|
|
goto_url_hooks.push(expand_smartprefix)
|