aboutsummaryrefslogtreecommitdiffstats
path: root/multi_requester.js
diff options
context:
space:
mode:
Diffstat (limited to 'multi_requester.js')
-rw-r--r--multi_requester.js60
1 files changed, 34 insertions, 26 deletions
diff --git a/multi_requester.js b/multi_requester.js
index 73f7604..c4c01d0 100644
--- a/multi_requester.js
+++ b/multi_requester.js
@@ -4,7 +4,7 @@
* @description request, and the result is displayed to the buffer.
* @description-ja リクエストの結果をバッファに出力する。
* @author suVene suvene@zeromemory.info
- * @version 0.2.0
+ * @version 0.2.1
* @minVersion 1.2
* @maxVersion 1.2
* ==/VimperatorPlugin==
@@ -62,7 +62,6 @@
*
*
* TODO:
- * - wedata からのデータ取得を非同期に。
* - wedata local cache.
* - 複数リクエスト対応。
*/
@@ -86,6 +85,8 @@ var SITEINFO = [
},
];
+var mergedSiteinfo = {};
+
// utilities
var $U = {
log: function(msg, level) {
@@ -108,6 +109,11 @@ var $U = {
dst[prop] = src[prop];
return dst;
},
+ A: function(hash) {
+ var ret = [];
+ for (let v in hash) ret.push(hash[v]);
+ return ret;
+ },
bind: function(obj, func) {
return function() {
return func.apply(obj, arguments);
@@ -152,6 +158,7 @@ var $U = {
var CommandRegister = {
register: function(cmdClass, siteinfo) {
cmdClass.siteinfo = siteinfo;
+
liberator.commands.addUserCommand(
cmdClass.name,
cmdClass.description,
@@ -169,12 +176,10 @@ var CommandRegister = {
argCount: cmdClass.argCount || undefined,
bang: cmdClass.bang || true,
count: cmdClass.count || false
- }
+ },
+ true // replace
);
- if (liberator.globalVariables.multi_requester_mappings) {
- this.addUserMaps(cmdClass.name[0], liberator.globalVariables.multi_requester_mappings);
- }
},
addUserMaps: function(prefix, mapdef) {
mapdef.forEach(function([key, command, special, args]) {
@@ -341,7 +346,6 @@ Response.prototype = {
return this.transport.statusText || '';
} catch (e) { return ''; }
},
-
getHTMLDocument: function(xpath, xmlns) {
if (!this.doc) {
this.htmlFragmentstr = this.responseText.replace(/^[\s\S]*?<html(?:[ \t\n\r][^>]*)?>|<\/html[ \t\r\n]*>[\S\s]*$/ig, '').replace(/[\r\n]+/g, ' ');
@@ -411,40 +415,36 @@ var DataAccess = {
return ret;
},
getSiteInfo: function() {
- var ret = {};
- var useWedata = liberator.globalVariables.multi_requester_use_wedata ?
- $U.eval(liberator.globalVariables.multi_requester_use_wedata) : true;
+ var useWedata = typeof liberator.globalVariables.multi_requester_use_wedata == 'undefined' ?
+ true : $U.eval(liberator.globalVariables.multi_requester_use_wedata);
+
if (useWedata) {
$U.log('use Wedata');
this.getWedata(function(site) {
- if (!ret[site.name]) ret[site.name] = {};
- $U.extend(ret[site.name], site);
+ if (mergedSiteinfo[site.name]) return;
+ mergedSiteinfo[site.name] = {};
+ $U.extend(mergedSiteinfo[site.name], site);
});
}
if (liberator.globalVariables.multi_requester_siteinfo) {
liberator.globalVariables.multi_requester_siteinfo.forEach(function(site) {
- if (!ret[site.name]) ret[site.name] = {};
- $U.extend(ret[site.name], site);
+ if (!mergedSiteinfo[site.name]) mergedSiteinfo[site.name] = {};
+ $U.extend(mergedSiteinfo[site.name], site);
});
}
SITEINFO.forEach(function(site) {
- if (!ret[site.name]) ret[site.name] = {};
- $U.extend(ret[site.name], site);
+ if (!mergedSiteinfo[site.name]) mergedSiteinfo[site.name] = {};
+ $U.extend(mergedSiteinfo[site.name], site);
});
- var result = [];
- for (let v in ret)
- result.push(ret[v]);
-
- return result;
+ return $U.A(mergedSiteinfo);
},
getWedata: function(func) {
var req = new Request(
- 'http://wedata.net/databases/Multi%20Requester/items.json',
- null, { asynchronous: false }
+ 'http://wedata.net/databases/Multi%20Requester/items.json'
);
req.addEventListener('onSuccess', function(res) {
var text = res.responseText;
@@ -452,7 +452,9 @@ var DataAccess = {
var json = $U.evalJson(text);
if (!json) return;
- json.forEach(function(item) { func(item.data); } );
+ json.forEach(function(item) func(item.data));
+ CommandRegister.register(MultiRequester, $U.A(mergedSiteinfo));
+
});
req.get();
}
@@ -463,7 +465,7 @@ var MultiRequester = {
name: DataAccess.getCommand(),
description: 'request, and display to the buffer',
cmdOptions: [
- [['-s'], liberator.OPTION_NOARG]
+ [['-s'], liberator.OPTION_NOARG]
],
cmdAction: function(args, special, count) {
@@ -480,6 +482,7 @@ var MultiRequester = {
var ttbu = Components.classes['@mozilla.org/intl/texttosuburi;1']
.getService(Components.interfaces.nsITextToSubURI);
url = url.replace(/%s/g, ttbu.ConvertAndEscape(urlEncode, parsedArgs.str));
+ $U.log(url);
if (special) {
liberator.open(url, liberator.NEW_TAB);
@@ -507,7 +510,7 @@ var MultiRequester = {
if (!args) return null;
var isOptS = args.hasOwnProperty('-s');
- if (isOptS && args.arguments.length < 1 && args.arguments.length < 2) return null;
+ if ((isOptS && args.arguments.length < 1) || (!isOptS && args.arguments.length < 2)) return null;
var siteName = args.arguments.shift();
var str = (isOptS ? $U.getSelectedString() : args.arguments.join()).replace(/[\n\r]+/g, '');
@@ -524,6 +527,7 @@ var MultiRequester = {
return ret;
},
onSuccess: function(res) {
+
var url, escapedUrl, xpath, doc, html;
try {
@@ -555,6 +559,10 @@ var MultiRequester = {
};
CommandRegister.register(MultiRequester, DataAccess.getSiteInfo());
+if (liberator.globalVariables.multi_requester_mappings) {
+ CommandRegister.addUserMaps(MultiRequester.name[0], liberator.globalVariables.multi_requester_mappings);
+}
+
return MultiRequester;
})();