1 /* Common code for smartprefixes_classic.js and smartprefixes_bookmarks.js. */
3 /* Helper function for debian_contents and debian_file. */
4 function debian_package (url
, t
)
6 url
= url
.replace(/(\w+):(\w+)/g,
7 function (all
, key
, val
) { t
[key
] = val
; return ""; })
9 return 'http://packages.debian.org/cgi-bin/search_contents.pl?word='
10 + escape(url
.replace(/\s*(\S+)\s*/, '$1'))
11 + '&searchmode=' + (t
.searchmode
|| 'searchfilesanddirs')
12 + '&case=' + (t
["case"] || 'insensitive')
13 + '&version=' + (t
.version
|| 'stable')
14 + '&arch=' + (t
.arch
|| 'i386')
17 /* javascript:debian_contents("%s"); */
18 function debian_contents (url
)
20 return debian_package (url
, { searchmode
: "filelist" })
23 /* javascript:debian_file("%s"); */
24 function debian_file (url
)
26 return debian_package (url
, { searchmode
: "searchfilesanddirs" })
29 /* javascript:cvsweb("http://cvsweb.elinks.cz/cvsweb.cgi/", "elinks", "%s"); */
30 function cvsweb (base, project, url)
32 /* <file>:<revision>[-><revision>] */
33 url
= url
.replace(/^(.*):(.*?)(?:->(.*))?$/, "$1 $2 $3");
35 var parts
= url
.split(" ");
37 elinks
.alert('this smartprefix takes only one to three arguments');
41 var file
= parts
[0], oldrev
= parts
[1], newrev
= parts
[2];
43 elinks
.alert('no file given');
48 return base
+ project
+ "/" + file
+ ".diff"
49 + "?r1=" + oldrev
+ "&r2=" + newrev
+ "&f=u";
52 return base
+ "~checkout~/" + project
+ "/" + file
53 + (oldrev
!= "latest" && "?rev=" + oldrev
|| "");
55 return base
+ project
+ "/" + file
58 /* javascript:gitweb("http://repo.or.cz/gitweb.cgi", "elinks.git", "%s"); */
59 function gitweb(base
, project
, url
)
61 var parts
= url
.match(/^(search|summary|shortlog|log|blob|commit|commitdiff|history|tree|tag)(\s(.*))?/);
62 var query
= '?p=' + project
;
65 query
+= ';a=' + parts
[1];
67 /* If the extra arg is not for searching assume it is an ID. */
68 if (parts
[1] == 'search' && parts
[3])
69 query
+= ';s=' + escape(parts
[3]);
70 else if ((parts
[1] == 'blob' || parts
[1] == 'history' || parts
[1] == 'tree') && parts
[3])
71 query
+= ';f=' + escape(parts
[3]);
73 query
+= ';h=' + escape(parts
[3]);
76 query
+= ';a=summary';
82 /* javascript:gmane("%s") */
85 var v
= url
.split(' ');
86 var group
= v
[0], words
= v
.slice(1).join(' ');
88 if (!group
) return base_url
;
91 if (group
.match(/^gmane\./)) {
92 /* Looks like a newsgroup. */
93 return "http://dir.gmane.org/" + group
;
95 /* Looks like a mailing list. */
96 return "http://gmane.org/find.php?list=" + group
;
100 return "http://search.gmane.org/search.php?query=" + words
104 /* javascript:bugzilla('http://bugzilla.elinks.cz/', "%s"); */
105 function bugzilla (base_url
, arguments
)
107 if (!arguments
|| arguments
== '') return base_url
;
109 if (arguments
.match(/^[\d]+$/))
110 return base_url
+ 'show_bug.cgi?id=' + arguments
;
112 return base_url
+ 'buglist.cgi?short_desc_type=allwordssubstr'
113 + '&short_desc=' + escape(arguments
);
116 /* javascript:babelfish("%s"); */
117 function babelfish (url
)
120 "chinese-simp": 'zh',
121 "chinese-simple": 'zh',
122 "chinese-simplified": 'zh',
123 "chinese-trad": 'zt',
124 "chinese-traditional": 'zt',
140 "portugu\234s": 'pt',
147 var parts
= url
.match(/^(\S+)\s+(\S+)\s*(.*)/);
148 if (!parts
) return "";
150 var from = parts
[1], to
= parts
[2], text
= parts
[3];
152 if (lang2code
[from]) from = lang2code
[from];
153 if (lang2code
[to
]) to
= lang2code
[to
];
155 if (text
.match(/:[^[:blank:]]/))
156 url
= "http://babelfish.altavista.com/babelfish/urltrurl?url=";
158 url
= "http://babelfish.altavista.com/babelfish/tr?trtext=";
160 url
+= escape(text
) + "&lp=" + from + "_" + to
;
165 /* javascript:videodownloader("%s"); */
166 function videodownloader (url
)
168 elinks
.load_uri("http://videodownloader.net/get/?url=" + escape(url
),
170 var url
= cached
.content
.match(/<a href="(.*?)"><img src=".\/vd\/botdl.gif"/)[1]
171 if (url
) elinks
.location
= url
;