aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--multi_requester.js705
1 files changed, 354 insertions, 351 deletions
diff --git a/multi_requester.js b/multi_requester.js
index 95ac2af..89588c9 100644
--- a/multi_requester.js
+++ b/multi_requester.js
@@ -1,22 +1,22 @@
/*** BEGIN LICENSE BLOCK {{{
- Copyright (c) 2008 suVene<suvene@zeromemory.info>
+ Copyright (c) 2008 suVene<suvene@zeromemory.info>
- distributable under the terms of an MIT-style license.
- http://www.opensource.jp/licenses/mit-license.html
+ distributable under the terms of an MIT-style license.
+ http://www.opensource.jp/licenses/mit-license.html
}}} END LICENSE BLOCK ***/
// PLUGIN_INFO//{{{
var PLUGIN_INFO =
<VimperatorPlugin>
- <name>{NAME}</name>
- <description>request, and the result is displayed to the buffer.</description>
- <description lang="ja">リクエストの結果をバッファに出力する。</description>
- <author mail="suvene@zeromemory.info" homepage="http://zeromemory.sblo.jp/">suVene</author>
- <version>0.4.11</version>
- <license>MIT</license>
- <minVersion>2.0pre</minVersion>
- <maxVersion>2.0pre</maxVersion>
- <updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/multi_requester.js</updateURL>
- <detail><![CDATA[
+ <name>{NAME}</name>
+ <description>request, and the result is displayed to the buffer.</description>
+ <description lang="ja">リクエストの結果をバッファに出力する。</description>
+ <author mail="suvene@zeromemory.info" homepage="http://zeromemory.sblo.jp/">suVene</author>
+ <version>0.4.11</version>
+ <license>MIT</license>
+ <minVersion>2.0pre</minVersion>
+ <maxVersion>2.0pre</maxVersion>
+ <updateURL>http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/multi_requester.js</updateURL>
+ <detail><![CDATA[
== Needs Library ==
- _libly.js(ver.0.1.19)
@see http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/_libly.js
@@ -25,21 +25,21 @@ var PLUGIN_INFO =
>||
command[!] subcommand [ANY_TEXT]
||<
-- ! create new tab.
-- ANY_TEXT your input text
+- ! create new tab.
+- ANY_TEXT your input text
e.g.)
>||
-:mr alc[,goo,any1,any2…] ANY_TEXT -> request by the input text, and display to the buffer.
-:mr! goo[,any1,any2,…] {window.selection} -> request by the selected text, and display to the new tab.
+:mr alc[,goo,any1,any2…] ANY_TEXT -> request by the input text, and display to the buffer.
+:mr! goo[,any1,any2,…] {window.selection} -> request by the selected text, and display to the new tab.
||<
== Custumize .vimperatorrc ==
-=== Command(default [mr]) ===
+=== Command(default [ mr ]) ===
>||
let g:multi_requester_command = "ANY1, ANY2, ……"
or
-liberator.globalVariables.multi_requester_command = [ANY1, ANY2, ……];
+liberator.globalVariables.multi_requester_command = [ ANY1, ANY2, …… ];
||<
=== Default Sites (default undefined) ===
@@ -53,406 +53,409 @@ e.g.)
>||
javascript <<EOM
liberator.globalVariables.multi_requester_siteinfo = [
- {
- map: ',me', // optional: keymap for this siteinfo call
- bang: true, // optional:
- args: 'any' // optional:
- name: 'ex', // required: subcommand name
- description: 'example', // required: commandline short help
- url: 'http://example.com/?%s', // required: %s <-- replace string
- xpath: '//*', // optional: default all
- srcEncode: 'SHIFT_JIS', // optional: default UTF-8
- urlEncode: 'SHIFT_JIS', // optional: default srcEncode
- ignoreTags: 'img', // optional: default script, syntax 'tag1,tag2,……'
- extractLink: '//xpath' // optional: extract permalink
- },
+ {
+ map: ",me", // optional: keymap for this siteinfo call
+ bang: true, // optional:
+ args: "any" // optional:
+ name: "ex", // required: subcommand name
+ description: "example", // required: commandline short help
+ url: "http://example.com/?%s", // required: %s <-- replace string
+ xpath: "//*", // optional: default all
+ srcEncode: "SHIFT_JIS", // optional: default UTF-8
+ urlEncode: "SHIFT_JIS", // optional: default srcEncode
+ ignoreTags: "img", // optional: default script, syntax "tag1,tag2,……"
+ extractLink: "//xpath" // optional: extract permalink
+ },
];
EOM
||<
=== other siteinfo by wedata. ===
- @see http://wedata.net/databases/Multi%20Requester/items
+ @see http://wedata.net/databases/Multi%20Requester/items
=== Mappings ===
e.g.)
>||
javascript <<EOM
liberator.globalVariables.multi_requester_mappings = [
- [',ml', 'ex'], // == :mr ex
- [',mg', 'goo', '!'], // == :mr! goo
- [',ma', 'alc', , 'args'], // == :mr alc args
+ [ ",ml", "ex" ], // == :mr ex
+ [ ",mg", "goo", "!" ], // == :mr! goo
+ [ ",ma", "alc", , "args" ], // == :mr alc args
];
EOM
||<
=== Other Options ===
>||
-let g:multi_requester_use_wedata = "false" // true by default
+let g:multi_requester_use_wedata = "false" // true by default
||<
- ]]></detail>
+ ]]></detail>
</VimperatorPlugin>;
//}}}
(function() {
if (!liberator.plugins.libly) {
- liberator.log('multi_requester: needs _libly.js');
- return;
+ liberator.log("multi_requester: needs _libly.js");
+ return;
}
// global variables {{{
-var DEFAULT_COMMAND = ['mr'];
+var DEFAULT_COMMAND = [ "mr" ];
var SITEINFO = [
- {
- name: 'alc',
- description: 'SPACE ALC (\u82F1\u8F9E\u6717 on the Web)',
- url: 'http://eow.alc.co.jp/%s/UTF-8/',
- xpath: 'id("resultList")'
- },
- {
- name: 'goo',
- description: 'goo \u8F9E\u66F8',
- url: 'http://dictionary.goo.ne.jp/search.php?MT=%s&kind=all&mode=0&IE=UTF-8',
- xpath: 'id("incontents")/*[@class="ch04" or @class="fs14" or contains(@class, "diclst")]',
- srcEncode: 'EUC-JP',
- urlEncode: 'UTF-8'
- },
+ {
+ name: "alc",
+ description: "SPACE ALC (\u82F1\u8F9E\u6717 on the Web)",
+ url: "http://eow.alc.co.jp/%s/UTF-8/",
+ xpath: 'id("resultList")'
+ },
+ {
+ name: "goo",
+ description: "goo \u8F9E\u66F8",
+ url: "http://dictionary.goo.ne.jp/search.php?MT=%s&kind=all&mode=0&IE=UTF-8",
+ xpath: 'id("incontents")/*[@class="ch04" or @class="fs14" or contains(@class, "diclst")]',
+ srcEncode: "EUC-JP",
+ urlEncode: "UTF-8"
+ },
];
var libly = liberator.plugins.libly;
var $U = libly.$U;
-var logger = $U.getLogger('multi_requester');
+var logger = $U.getLogger("multi_requester");
var mergedSiteinfo = {};
//}}}
// Vimperator plugin command register {{{
var CommandRegister = {
- register: function(cmdClass, siteinfo) {
- cmdClass.siteinfo = siteinfo;
-
- commands.addUserCommand(
- cmdClass.name,
- cmdClass.description,
- $U.bind(cmdClass, cmdClass.cmdAction),
- {
- completer: cmdClass.cmdCompleter || function(context, arg) {
- context.title = ['Name', 'Descprition'];
- var filters = context.filter.split(',');
- var prefilters = filters.slice(0, filters.length - 1);
- var prefilter = !prefilters.length ? '' : prefilters.join(',') + ',';
- var subfilters = siteinfo.filter(function(s) prefilters.every(function(p) s.name != p));
- var allSuggestions = subfilters.map(function(s) [prefilter + s.name, s.description]);
- context.completions = context.filter
- ? allSuggestions.filter(function(s) s[0].indexOf(context.filter) == 0)
- : allSuggestions;
- },
- options: cmdClass.cmdOptions,
- argCount: cmdClass.argCount || undefined,
- bang: cmdClass.bang || true,
- count: cmdClass.count || false
- },
- true // replace
- );
-
- },
- addUserMaps: function(prefix, mapdef) {
- mapdef.forEach(function([key, command, bang, args]) {
- var cmd = prefix + (bang ? '! ' : ' ') + command + ' ';
- mappings.addUserMap(
- [modes.NORMAL, modes.VISUAL],
- [key],
- 'user defined mapping',
- function() {
- if (args) {
- liberator.execute(cmd + args);
- } else {
- let sel = $U.getSelectedString();
- if (sel.length) {
- liberator.execute(cmd + sel);
- } else {
- commandline.open(':', cmd, modes.EX);
- }
- }
- },
- {
- rhs: ':' + cmd,
- norremap: true
- }
- );
- });
- }
+ register: function(cmdClass, siteinfo) {
+ cmdClass.siteinfo = siteinfo;
+
+ commands.addUserCommand(
+ cmdClass.name,
+ cmdClass.description,
+ $U.bind(cmdClass, cmdClass.cmdAction),
+ {
+ completer: cmdClass.cmdCompleter || function(context, arg) {
+ context.title = [ "Name", "Descprition" ];
+ var filters = context.filter.split(",");
+ var prefilters = filters.slice(0, filters.length - 1);
+ var prefilter = !prefilters.length ? "" : prefilters.join(",") + ",";
+ var subfilters = siteinfo.filter(function(s) prefilters.every(function(p) s.name != p));
+ var allSuggestions = subfilters.map(function(s) [prefilter + s.name, s.description]);
+ context.completions = context.filter
+ ? allSuggestions.filter(function(s) s[0].indexOf(context.filter) == 0)
+ : allSuggestions;
+ },
+ options: cmdClass.cmdOptions,
+ argCount: cmdClass.argCount || undefined,
+ bang: cmdClass.bang || true,
+ count: cmdClass.count || false
+ },
+ true // replace
+ );
+
+ },
+ addUserMaps: function(prefix, mapdef) {
+ mapdef.forEach(function([ key, command, bang, args ]) {
+ var cmd = prefix + (bang ? "! " : " ") + command + " ";
+ mappings.addUserMap(
+ [ modes.NORMAL, modes.VISUAL ],
+ [ key ],
+ "user defined mapping",
+ function() {
+ if (args) {
+ liberator.execute(cmd + args);
+ } else {
+ let sel = $U.getSelectedString();
+ if (sel.length) {
+ liberator.execute(cmd + sel);
+ } else {
+ commandline.open(":", cmd, modes.EX);
+ }
+ }
+ },
+ {
+ rhs: ":" + cmd,
+ norremap: true
+ }
+ );
+ });
+ }
};
//}}}
// initial data access class {{{
var DataAccess = {
- getCommand: function() {
- var c = liberator.globalVariables.multi_requester_command;
- var ret;
- if (typeof c == 'string') {
- ret = [c];
- } else if (typeof c == 'Array') {
- ret = check;
- } else {
- ret = DEFAULT_COMMAND;
- }
- return ret;
- },
- getSiteInfo: function() {
-
- var self = this;
- var useWedata = typeof liberator.globalVariables.multi_requester_use_wedata == 'undefined' ?
- true : $U.eval(liberator.globalVariables.multi_requester_use_wedata);
-
- if (liberator.globalVariables.multi_requester_siteinfo) {
- liberator.globalVariables.multi_requester_siteinfo.forEach(function(site) {
- if (!mergedSiteinfo[site.name]) mergedSiteinfo[site.name] = {};
- $U.extend(mergedSiteinfo[site.name], site);
- if (site.map) {
- CommandRegister.addUserMaps(MultiRequester.name[0],
- [[site.map, site.name, site.bang, site.args]]);
- }
- });
+ getCommand: function() {
+ var c = liberator.globalVariables.multi_requester_command;
+ var ret;
+ if (typeof c == "string") {
+ ret = [ c ];
+ } else if (typeof c == "Array") {
+ ret = check;
+ } else {
+ ret = DEFAULT_COMMAND;
+ }
+ return ret;
+ },
+ getSiteInfo: function() {
+
+ var self = this;
+ var useWedata = typeof liberator.globalVariables.multi_requester_use_wedata == "undefined" ?
+ true : $U.eval(liberator.globalVariables.multi_requester_use_wedata);
+
+ if (liberator.globalVariables.multi_requester_siteinfo) {
+ liberator.globalVariables.multi_requester_siteinfo.forEach(function(site) {
+ if (!mergedSiteinfo[site.name]) mergedSiteinfo[site.name] = {};
+ $U.extend(mergedSiteinfo[site.name], site);
+ if (site.map) {
+ CommandRegister.addUserMaps(MultiRequester.name[0],
+ [[ site.map, site.name, site.bang, site.args ]]);
}
+ });
+ }
- SITEINFO.forEach(function(site) {
- if (!mergedSiteinfo[site.name]) mergedSiteinfo[site.name] = {};
- $U.extend(mergedSiteinfo[site.name], site);
- if (site.map) {
- CommandRegister.addUserMaps(MultiRequester.name[0],
- [[site.map, site.name, site.bang, site.args]]);
- }
- });
-
- if (useWedata) {
- logger.log('use wedata');
- var wedata = new libly.Wedata('Multi%20Requester');
- wedata.getItems(24 * 60 * 60 * 1000,
- function(item) {
- var site = item.data;
- if (mergedSiteinfo[site.name]) return;
- mergedSiteinfo[site.name] = {};
- $U.extend(mergedSiteinfo[site.name], site);
- },
- function(isSuccess, data) {
- if (!isSuccess) return;
- CommandRegister.register(MultiRequester, $U.A(mergedSiteinfo));
- }
- );
+ SITEINFO.forEach(function(site) {
+ if (!mergedSiteinfo[site.name]) mergedSiteinfo[site.name] = {};
+ $U.extend(mergedSiteinfo[site.name], site);
+ if (site.map) {
+ CommandRegister.addUserMaps(MultiRequester.name[0],
+ [[ site.map, site.name, site.bang, site.args ]]);
+ }
+ });
+
+ if (useWedata) {
+ logger.log("use wedata");
+ var wedata = new libly.Wedata("Multi%20Requester");
+ wedata.getItems(24 * 60 * 60 * 1000,
+ function(item) {
+ var site = item.data;
+ if (mergedSiteinfo[site.name]) return;
+ mergedSiteinfo[site.name] = {};
+ $U.extend(mergedSiteinfo[site.name], site);
+ },
+ function(isSuccess, data) {
+ if (!isSuccess) return;
+ CommandRegister.register(MultiRequester, $U.A(mergedSiteinfo));
}
-
- return $U.A(mergedSiteinfo);
+ );
}
+
+ return $U.A(mergedSiteinfo);
+ }
};
//}}}
// main controller {{{
var MultiRequester = {
- name: DataAccess.getCommand(),
- description: 'request, and display to the buffer',
- defaultSites: liberator.globalVariables.multi_requester_default_sites,
- doProcess: false,
- requestNames: '',
- requestCount: 0,
- echoHash: {},
- cmdAction: function(args) { //{{{
-
- if (MultiRequester.doProcess) return;
-
- var bang = args.bang;
- var count = args.count;
-
- var parsedArgs = this.parseArgs(args);
- if (parsedArgs.count == 0) { return; } // do nothing
-
- MultiRequester.doProcess = true;
- MultiRequester.requestNames = parsedArgs.names;
- MultiRequester.requestCount = 0;
- MultiRequester.echoHash = {};
- var siteinfo = parsedArgs.siteinfo;
- for (let i = 0, len = parsedArgs.count; i < len; i++) {
-
- let info = siteinfo[i];
- let url = info.url;
- // see: http://fifnel.com/2008/11/14/1980/
- let srcEncode = info.srcEncode || 'UTF-8';
- let urlEncode = info.urlEncode || srcEncode;
-
- let idxRepStr = url.indexOf('%s');
- if (idxRepStr > -1 && !parsedArgs.strs.length) continue;
-
- // via. lookupDictionary.js
- let ttbu = Components.classes['@mozilla.org/intl/texttosuburi;1']
- .getService(Components.interfaces.nsITextToSubURI);
-
- let cnt = 0;
- url = url.replace(/%s/g, function(m, i) ttbu.ConvertAndEscape(urlEncode,
- (cnt < parsedArgs.strs.length ? parsedArgs.strs[cnt++] : parsedArgs.strs[cnt - 1])));
- logger.log(url + '[' + srcEncode + '][' + urlEncode + ']::' + info.xpath);
-
- if (bang) {
- liberator.open(url, liberator.NEW_TAB);
- } else {
- let req = new libly.Request(url, null, {
- encoding: srcEncode,
- siteinfo: info,
- args: {
- args: args,
- bang: bang,
- count: count
- }
- });
- req.addEventListener('onException', $U.bind(this, this.onException));
- req.addEventListener('onSuccess', $U.bind(this, this.onSuccess));
- req.addEventListener('onFailure', $U.bind(this, this.onFailure));
- req.get();
- MultiRequester.requestCount++;
- }
- }
-
- if (MultiRequester.requestCount) {
- logger.echo('Loading ' + parsedArgs.names + ' ...', commandline.FORCE_SINGLELINE);
- } else {
- MultiRequester.doProcess = false;
- }
- },
- // return {names: '', strs: [''], count: 0, siteinfo: [{}]}
- parseArgs: function(args) {
-
- var self = this;
- var ret = {};
- ret.names = '';
- ret.strs = [];
- ret.count = 0;
- var sel = $U.getSelectedString();
-
- if (args.length < 1 && !sel.length) return ret;
-
- function parse(args, names) {
- args = Array.concat(args);
- ret.siteinfo = [];
- ret.names = names || args.shift() || '';
- ret.strs = (args.length < 1 ? [sel.replace(/[\n\r]+/g, '')] : args);
-
- ret.names.split(',').forEach(function(name) {
- var site = self.getSite(name);
- if (site) {
- ret.count++;
- ret.siteinfo.push(site);
- }
- });
- }
-
- parse(args);
-
- if (!ret.siteinfo.length && this.defaultSites)
- parse(args, this.defaultSites);
-
- return ret;
- },
- getSite: function(name) {
- if (!name) this.siteinfo[0];
- var ret = null;
- this.siteinfo.forEach(function(s) {
- if (s.name == name) ret = s;
+ name: DataAccess.getCommand(),
+ description: "request, and display to the buffer",
+ defaultSites: liberator.globalVariables.multi_requester_default_sites,
+ doProcess: false,
+ requestNames: "",
+ requestCount: 0,
+ echoHash: {},
+ cmdAction: function(args) { //{{{
+
+ if (MultiRequester.doProcess) return;
+
+ var bang = args.bang;
+ var count = args.count;
+
+ var parsedArgs = this.parseArgs(args);
+ if (parsedArgs.count == 0) { return; } // do nothing
+
+ MultiRequester.doProcess = true;
+ MultiRequester.requestNames = parsedArgs.names;
+ MultiRequester.requestCount = 0;
+ MultiRequester.echoHash = {};
+ var siteinfo = parsedArgs.siteinfo;
+ for (let i = 0, len = parsedArgs.count; i < len; i++) {
+
+ let info = siteinfo[i];
+ let name = info.name;
+
+ logger.log(name);
+ let url = info.url;
+ // see: http://fifnel.com/2008/11/14/1980/
+ let srcEncode = info.srcEncode || "UTF-8";
+ let urlEncode = info.urlEncode || srcEncode;
+
+ let idxRepStr = url.indexOf("%s");
+ if (idxRepStr > -1 && !parsedArgs.strs.length) continue;
+
+ // via. lookupDictionary.js
+ let ttbu = Components.classes["@mozilla.org/intl/texttosuburi;1"]
+ .getService(Components.interfaces.nsITextToSubURI);
+
+ let cnt = 0;
+ url = url.replace(/%s/g, function(m, i) ttbu.ConvertAndEscape(urlEncode,
+ (cnt < parsedArgs.strs.length ? parsedArgs.strs[cnt++] : parsedArgs.strs[cnt - 1])));
+ logger.log(url + "[" + srcEncode + "][" + urlEncode + "]::" + info.xpath);
+
+ if (bang) {
+ liberator.open(url, liberator.NEW_TAB);
+ } else {
+ let req = new libly.Request(url, null, {
+ encoding: srcEncode,
+ siteinfo: info,
+ args: {
+ args: args,
+ bang: bang,
+ count: count
+ }
});
- return ret;
- },//}}}
- extractLink: function(res, extractLink) { //{{{
-
- var el = res.getHTMLDocument(extractLink);
- if (!el) throw 'extract link failed.: extractLink -> ' + extractLink;
- var url = $U.pathToURL(el[0], res.req.url);
- var req = new libly.Request(url, null, $U.extend(res.req.options, {extractLink: true}));
- req.addEventListener('onException', $U.bind(this, this.onException));
- req.addEventListener('onSuccess', $U.bind(this, this.onSuccess));
- req.addEventListener('onFailure', $U.bind(this, this.onFailure));
+ req.addEventListener("onException", $U.bind(this, this.onException));
+ req.addEventListener("onSuccess", $U.bind(this, this.onSuccess));
+ req.addEventListener("onFailure", $U.bind(this, this.onFailure));
req.get();
MultiRequester.requestCount++;
- MultiRequester.doProcess = true;
-
- },//}}}
- onSuccess: function(res) { //{{{
+ }
+ }
- if (!MultiRequester.doProcess) {
- MultiRequester.requestCount = 0;
- return;
+ if (MultiRequester.requestCount) {
+ logger.echo("Loading " + parsedArgs.names + " ...", commandline.FORCE_SINGLELINE);
+ } else {
+ MultiRequester.doProcess = false;
+ }
+ },
+ // return {names: "", strs: [""], count: 0, siteinfo: [{}]}
+ parseArgs: function(args) {
+
+ var self = this;
+ var ret = {};
+ ret.names = "";
+ ret.strs = [];
+ ret.count = 0;
+ var sel = $U.getSelectedString();
+
+ if (args.length < 1 && !sel.length) return ret;
+
+ function parse(args, names) {
+ args = Array.concat(args);
+ ret.siteinfo = [];
+ ret.names = names || args.shift() || "";
+ ret.strs = (args.length < 1 ? [ sel.replace(/[\n\r]+/g, "") ] : args);
+
+ ret.names.split(",").forEach(function(name) {
+ var site = self.getSite(name);
+ if (site) {
+ ret.count++;
+ ret.siteinfo.push(site);
}
+ });
+ }
- logger.log('success!!: ' + res.req.url);
- MultiRequester.requestCount--;
- if (MultiRequester.requestCount == 0) {
- MultiRequester.doProcess = false;
- }
+ parse(args);
+
+ if (!ret.siteinfo.length && this.defaultSites)
+ parse(args, this.defaultSites);
+
+ return ret;
+ },
+ getSite: function(name) {
+ if (!name) this.siteinfo[0];
+ var ret = null;
+ this.siteinfo.forEach(function(s) {
+ if (s.name == name) ret = s;
+ });
+ return ret;
+ },//}}}
+ extractLink: function(res, extractLink) { //{{{
+
+ var el = res.getHTMLDocument(extractLink);
+ if (!el) throw "extract link failed.: extractLink -> " + extractLink;
+ var url = $U.pathToURL(el[0], res.req.url);
+ var req = new libly.Request(url, null, $U.extend(res.req.options, { extractLink: true }));
+ req.addEventListener("onException", $U.bind(this, this.onException));
+ req.addEventListener("onSuccess", $U.bind(this, this.onSuccess));
+ req.addEventListener("onFailure", $U.bind(this, this.onFailure));
+ req.get();
+ MultiRequester.requestCount++;
+ MultiRequester.doProcess = true;
+
+ },//}}}
+ onSuccess: function(res) { //{{{
+
+ if (!MultiRequester.doProcess) {
+ MultiRequester.requestCount = 0;
+ return;
+ }
- var url, escapedUrl, xpath, doc, html, extractLink, ignoreTags;
+ logger.log("success!!: " + res.req.url);
+ MultiRequester.requestCount--;
+ if (MultiRequester.requestCount == 0) {
+ MultiRequester.doProcess = false;
+ }
- try {
+ var url, escapedUrl, xpath, doc, html, extractLink, ignoreTags;
+
+ try {
+
+ if (!res.isSuccess() || res.responseText == "") throw "response is fail or null";
+
+ url = res.req.url;
+ escapedUrl = util.escapeHTML(url);
+ xpath = res.req.options.siteinfo.xpath;
+ extractLink = res.req.options.siteinfo.extractLink;
+
+ if (extractLink && !res.req.options.extractLink) {
+ this.extractLink(res, extractLink);
+ return;
+ }
+ ignoreTags = [ "script" ].concat(libly.$U.A(res.req.options.siteinfo.ignoreTags));
+ doc = document.createElementNS(null, "div");
+ res.getHTMLDocument(xpath, null, ignoreTags, function(node, i) {
+ if (node.tagName.toLowerCase() != "html")
+ doc.appendChild(node);
+ });
+ if (!doc || !doc.childNodes.length) throw "XPath result is undefined or null.: XPath -> " + xpath;
+
+ $U.getNodesFromXPath("descendant-or-self::a | descendant-or-self::img", doc, function(node) {
+ var tagName = node.tagName.toLowerCase();
+ if (tagName == "a") {
+ node.href = $U.pathToURL(node, url, res.doc);
+ } else if (tagName == "img") {
+ node.src = $U.pathToURL(node, url, res.doc);
+ }
+ });
- if (!res.isSuccess() || res.responseText == '') throw 'response is fail or null';
+ html = '<a href="' + escapedUrl + '" class="hl-Title" target="_self">' + escapedUrl + '</a>' +
+ $U.xmlSerialize(doc);
- url = res.req.url;
- escapedUrl = util.escapeHTML(url);
- xpath = res.req.options.siteinfo.xpath;
- extractLink = res.req.options.siteinfo.extractLink;
+ MultiRequester.echoHash[res.req.options.siteinfo.name] = html;
- if (extractLink && !res.req.options.extractLink) {
- this.extractLink(res, extractLink);
- return;
- }
- ignoreTags = ['script'].concat(libly.$U.A(res.req.options.siteinfo.ignoreTags));
- doc = document.createElementNS(null, 'div');
- res.getHTMLDocument(xpath, null, ignoreTags, function(node, i) {
- if (node.tagName.toLowerCase() != 'html')
- doc.appendChild(node);
- });
- if (!doc || !doc.childNodes.length) throw 'XPath result is undefined or null.: XPath -> ' + xpath;
-
- $U.getNodesFromXPath('descendant-or-self::a | descendant-or-self::img', doc, function(node) {
- var tagName = node.tagName.toLowerCase();
- if (tagName == 'a') {
- node.href = $U.pathToURL(node, url, res.doc);
- } else if (tagName == 'img') {
- node.src = $U.pathToURL(node, url, res.doc);
- }
- });
-
- html = '<a href="' + escapedUrl + '" class="hl-Title" target="_self">' + escapedUrl + '</a>' +
- $U.xmlSerialize(doc);
-
- MultiRequester.echoHash[res.req.options.siteinfo.name] = html;
-
- } catch (e) {
- logger.log('error!!: ' + e);
- MultiRequester.echoHash[res.req.options.siteinfo.name] =
- '<span style="color: red;">error!!: ' + e + '</span>';
- }
+ } catch (e) {
+ logger.log("error!!: " + e);
+ MultiRequester.echoHash[res.req.options.siteinfo.name] =
+ '<span style="color: red;">error!!: ' + e + '</span>';
+ }
- if (MultiRequester.requestCount == 0) {
- let echoList = [];
- MultiRequester.requestNames.split(',').forEach(function(name) {
- echoList.push(MultiRequester.echoHash[name]);
- });
- html = '<div style="white-space:normal;"><base href="' + escapedUrl + '"/>' +
- echoList.join('') +
- '</div>';
- try { logger.echo(new XMLList(html)); } catch (e) { logger.log(e); logger.echo(html); }
- }
+ if (MultiRequester.requestCount == 0) {
+ let echoList = [];
+ MultiRequester.requestNames.split(",").forEach(function(name) {
+ echoList.push(MultiRequester.echoHash[name]);
+ });
+ html = '<div style="white-space:normal;"><base href="' + escapedUrl + '"/>' +
+ echoList.join("") +
+ '</div>';
+ try { logger.echo(new XMLList(html)); } catch (e) { logger.log(e); logger.echo(html); }
+ }
- },
- onFailure: function(res) {
- MultiRequester.doProcess = false;
- logger.echoerr('request failure!!: ' + res.statusText);
- },
- onException: function(e) {
- MultiRequester.doProcess = false;
- logger.echoerr('exception!!: ' + e);
- }//}}}
+ },
+ onFailure: function(res) {
+ MultiRequester.doProcess = false;
+ logger.echoerr("request failure!!: " + res.statusText);
+ },
+ onException: function(e) {
+ MultiRequester.doProcess = false;
+ logger.echoerr("exception!!: " + e);
+ }//}}}
};
//}}}
// boot strap {{{
CommandRegister.register(MultiRequester, DataAccess.getSiteInfo());
if (liberator.globalVariables.multi_requester_mappings) {
- CommandRegister.addUserMaps(MultiRequester.name[0], liberator.globalVariables.multi_requester_mappings);
+ CommandRegister.addUserMaps(MultiRequester.name[0], liberator.globalVariables.multi_requester_mappings);
}
//}}}