Changeset 25308 for lang/javascript/vimperator-plugins
- Timestamp:
- 11/29/08 07:00:13 (6 weeks ago)
- Location:
- lang/javascript/vimperator-plugins
- Files:
-
- 2 modified
-
branches/1.2/multi_requester.js (modified) (9 diffs)
-
trunk/multi_requester.js (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/javascript/vimperator-plugins/branches/1.2/multi_requester.js
r25005 r25308 5 5 * @description-ja リクエストの結果をバッファに出力する。 6 6 * @author suVene suvene@zeromemory.info 7 * @version 0. 2.37 * @version 0.3.0 8 8 * @minVersion 1.2 9 9 * @maxVersion 1.2 10 * Last Change: 29-Nov-2008. 10 11 * ==/VimperatorPlugin== 11 12 * … … 16 17 * ANY_TEXT your input text 17 18 * 18 * :mr alc ANY_TEXT -> request by the input text, and display to the buffer. 19 * :mr! goo {window.selection} -> request by the selected text, and display to the new tab. 20 * 19 * :mr alc[,goo,any1,any2…] ANY_TEXT -> request by the input text, and display to the buffer. 20 * :mr! goo[,any1,any2,…] {window.selection} -> request by the selected text, and display to the new tab. 21 * 22 * other siteinfo by wedata. 23 * @see http://wedata.net/databases/Multi%20Requester/items 21 24 * 22 25 * CUSTOMIZE .vimperatorrc: … … 43 46 * EOM 44 47 * 45 * other siteinfo by wedata.46 * @see http://wedata.net/databases/Multi%20Requester/items47 *48 48 * [MAPPINGS] 49 49 * ex.) … … 62 62 * TODO: 63 63 * - wedata local cache. 64 * - 複数リクエスト対応。65 64 */ 66 65 (function() { … … 73 72 url: 'http://eow.alc.co.jp/%s/UTF-8/', 74 73 xpath: 'id("resultList")' 75 },76 {74 }, 75 { 77 76 name: 'goo', 78 77 description: 'goo \u8F9E\u66F8', … … 81 80 srcEncode: 'EUC-JP', 82 81 urlEncode: 'UTF-8' 83 },82 } 84 83 ]; 85 84 … … 89 88 var $U = { 90 89 log: function(msg, level) { 91 liberator.log(msg, (level || 9));90 liberator.log(msg, (level || 8)); 92 91 }, 93 92 debug: function(msg) { 94 this.log(msg, 9);93 this.log(msg, 8); 95 94 liberator.echo(msg); 96 95 }, … … 163 162 $U.bind(cmdClass, cmdClass.cmdAction), 164 163 { 165 completer: cmdClass.cmdCompleter || function(filter, special) { 166 var allSuggestions = siteinfo.map(function(s) [s.name, s.description]); 164 completer: cmdClass.cmdCompleter || function(filter, bang) { 165 let filters = filter.split(','); 166 let prefilters = filters.slice(0, filters.length - 1); 167 let prefilter = !prefilters.length ? '' : prefilters.join(',') + ','; 168 let subfilters = siteinfo.filter(function(s) prefilters.every(function(p) s.name != p)); 169 var allSuggestions = subfilters.map(function(s) [prefilter + s.name, s.description]); 167 170 if (!filter) return [0, allSuggestions]; 168 var suggestions = allSuggestions.filter(function(s) { 169 return s[0].indexOf(filter) == 0; 170 }); 171 return [0, suggestions]; 171 return [0, allSuggestions.filter(function(s) s[0].indexOf(filter) == 0)] 172 172 }, 173 173 options: cmdClass.cmdOptions, … … 467 467 name: DataAccess.getCommand(), 468 468 description: 'request, and display to the buffer', 469 cmdAction: function(args, special, count) {469 cmdAction: function(args, bang, count) { 470 470 471 471 var parsedArgs = this.parseArgs(args); 472 if (!parsedArgs || !parsedArgs.siteinfo) { return; } // do nothing 473 472 if (parsedArgs.count == 0) { return; } // do nothing 474 473 var siteinfo = parsedArgs.siteinfo; 475 var url = siteinfo.url; 476 // see: http://fifnel.com/2008/11/14/1980/ 477 var srcEncode = siteinfo.srcEncode || 'UTF-8'; 478 var urlEncode = siteinfo.urlEncode || srcEncode; 479 480 var idxRepStr = url.indexOf('%s'); 481 if (idxRepStr > -1 && !parsedArgs.str) return; 482 483 // via. lookupDictionary.js 484 var ttbu = Components.classes['@mozilla.org/intl/texttosuburi;1'] 485 .getService(Components.interfaces.nsITextToSubURI); 486 487 488 url = url.replace(/%s/g, ttbu.ConvertAndEscape(urlEncode, parsedArgs.str)); 489 $U.log(url + '::' + siteinfo.xpath); 490 491 if (special) { 492 liberator.open(url, liberator.NEW_TAB); 493 } else { 494 let req = new Request(url, null, { 495 encoding: srcEncode, 496 siteinfo: siteinfo, 497 args: { 498 args: args, 499 special: special, 500 count: count 501 } 502 }); 503 req.addEventListener('onException', $U.bind(this, this.onException)); 504 req.addEventListener('onSuccess', $U.bind(this, this.onSuccess)); 505 req.addEventListener('onFailure', $U.bind(this, this.onFailure)); 506 req.get(); 507 508 $U.echo('Loading ' + parsedArgs.name + ' ...', liberator.commandline.FORCE_SINGLELINE); 509 } 510 }, 511 // return {name: '', siteinfo: {}, str: ''} or null 474 for (let i = 0, len = parsedArgs.count; i < len; i++) { 475 476 let info = siteinfo[i]; 477 var url = info.url; 478 // see: http://fifnel.com/2008/11/14/1980/ 479 var srcEncode = info.srcEncode || 'UTF-8'; 480 var urlEncode = info.urlEncode || srcEncode; 481 482 var idxRepStr = url.indexOf('%s'); 483 if (idxRepStr > -1 && !parsedArgs.str) continue; 484 485 // via. lookupDictionary.js 486 var ttbu = Components.classes['@mozilla.org/intl/texttosuburi;1'] 487 .getService(Components.interfaces.nsITextToSubURI); 488 url = url.replace(/%s/g, ttbu.ConvertAndEscape(urlEncode, parsedArgs.str)); 489 $U.log(url + '[' + srcEncode + '][' + urlEncode + ']::' + info.xpath); 490 491 if (bang) { 492 liberator.open(url, liberator.NEW_TAB); 493 } else { 494 let req = new Request(url, null, { 495 encoding: srcEncode, 496 siteinfo: info, 497 args: { 498 args: args, 499 bang: bang, 500 count: count 501 } 502 }); 503 req.addEventListener('onException', $U.bind(this, this.onException)); 504 req.addEventListener('onSuccess', $U.bind(this, this.onSuccess)); 505 req.addEventListener('onFailure', $U.bind(this, this.onFailure)); 506 req.get(); 507 } 508 $U.echo('Loading ' + parsedArgs.names + ' ...', commandline.FORCE_SINGLELINE); 509 } 510 }, 511 // return {names: '', str: '', count: 0, siteinfo: [{}]} 512 512 parseArgs: function(args) { 513 513 514 if (!args) return null; 514 var self = this; 515 var ret = {}; 516 ret.names = ''; 517 ret.str = ''; 518 ret.count = 0; 519 ret.siteinfo = []; 520 521 if (!args) return ret; 515 522 516 523 var arguments = args.split(/ +/); 517 524 var sel = $U.getSelectedString(); 518 525 519 if (arguments.length < 1) return null; 520 521 var siteName = arguments.shift(); 522 var str = (arguments.length < 1 ? sel : arguments.join()).replace(/[\n\r]+/g, ''); 523 var siteinfo = this.getSite(siteName); 524 525 return {name: siteName, siteinfo: siteinfo, str: str}; 526 if (arguments.length < 1) return ret; 527 528 ret.names = arguments.shift(); 529 ret.str = (arguments.length < 1 ? sel : arguments.join()).replace(/[\n\r]+/g, ''); 530 531 ret.names.split(',').forEach(function(name) { 532 let site = self.getSite(name); 533 if (site) { 534 ret.count++; 535 ret.siteinfo.push(site); 536 } 537 }); 538 539 return ret; 526 540 }, 527 541 getSite: function(name) { -
lang/javascript/vimperator-plugins/trunk/multi_requester.js
r25005 r25308 5 5 * @description-ja リクエストの結果をバッファに出力する。 6 6 * @author suVene suvene@zeromemory.info 7 * @version 0. 2.47 * @version 0.3.0 8 8 * @minVersion 2.0pre 9 9 * @maxVersion 2.0pre 10 * Last Change: 29-Nov-2008. 10 11 * ==/VimperatorPlugin== 11 12 * … … 16 17 * ANY_TEXT your input text 17 18 * 18 * :mr alc ANY_TEXT -> request by the input text, and display to the buffer. 19 * :mr! goo {window.selection} -> request by the selected text, and display to the new tab. 20 * 19 * :mr alc[,goo,any1,any2…] ANY_TEXT -> request by the input text, and display to the buffer. 20 * :mr! goo[,any1,any2,…] {window.selection} -> request by the selected text, and display to the new tab. 21 * 22 * other siteinfo by wedata. 23 * @see http://wedata.net/databases/Multi%20Requester/items 21 24 * 22 25 * CUSTOMIZE .vimperatorrc: … … 43 46 * EOM 44 47 * 45 * other siteinfo by wedata.46 * @see http://wedata.net/databases/Multi%20Requester/items47 *48 48 * [MAPPINGS] 49 49 * ex.) … … 62 62 * TODO: 63 63 * - wedata local cache. 64 * - 複数リクエスト対応。65 64 */ 66 65 (function() { … … 81 80 srcEncode: 'EUC-JP', 82 81 urlEncode: 'UTF-8' 83 },84 {85 name: 'metalarchive-band',86 url: 'http://www.metal-archives.com/search.php?string=%s&type=band',87 description: 'Metal Archive (band)',88 xpath: '//table',89 82 } 90 83 ]; … … 95 88 var $U = { 96 89 log: function(msg, level) { 97 liberator.log(msg, (level || 9));90 liberator.log(msg, (level || 8)); 98 91 }, 99 92 debug: function(msg) { 100 this.log(msg, 9);93 this.log(msg, 8); 101 94 liberator.echo(msg); 102 95 }, … … 169 162 $U.bind(cmdClass, cmdClass.cmdAction), 170 163 { 171 completer: cmdClass.cmdCompleter || function(context, arg, bang) { 172 var allSuggestions = siteinfo.map(function(s) [s.name, s.description]); 164 completer: cmdClass.cmdCompleter || function(context, arg) { 173 165 context.title = ['Name', 'Descprition']; 174 context.completions = 175 context.filter ? allSuggestions.filter(function(s) s[0].indexOf(context.filter) == 0) 176 : allSuggestions; 166 let filters = context.filter.split(','); 167 let prefilters = filters.slice(0, filters.length - 1); 168 let prefilter = !prefilters.length ? '' : prefilters.join(',') + ','; 169 let subfilters = siteinfo.filter(function(s) prefilters.every(function(p) s.name != p)); 170 var allSuggestions = subfilters.map(function(s) [prefilter + s.name, s.description]); 171 context.completions = context.filter 172 ? allSuggestions.filter(function(s) s[0].indexOf(context.filter) == 0) 173 : allSuggestions; 177 174 }, 178 175 options: cmdClass.cmdOptions, … … 472 469 name: DataAccess.getCommand(), 473 470 description: 'request, and display to the buffer', 474 cmdAction: function(args, special, count) { 475 476 args = args.string; 477 var parsedArgs = this.parseArgs(args); 478 if (!parsedArgs || !parsedArgs.siteinfo) { return; } // do nothing 471 cmdAction: function(args) { 472 473 var argstr = args.string; 474 var bang = args.bang; 475 var count = args.count; 476 477 var parsedArgs = this.parseArgs(argstr); 478 if (parsedArgs.count == 0) { return; } // do nothing 479 479 480 480 var siteinfo = parsedArgs.siteinfo; 481 var url = siteinfo.url; 482 // see: http://fifnel.com/2008/11/14/1980/ 483 var srcEncode = siteinfo.srcEncode || 'UTF-8'; 484 var urlEncode = siteinfo.urlEncode || srcEncode; 485 486 var idxRepStr = url.indexOf('%s'); 487 if (idxRepStr > -1 && !parsedArgs.str) return; 488 489 // via. lookupDictionary.js 490 var ttbu = Components.classes['@mozilla.org/intl/texttosuburi;1'] 491 .getService(Components.interfaces.nsITextToSubURI); 492 url = url.replace(/%s/g, ttbu.ConvertAndEscape(urlEncode, parsedArgs.str)); 493 $U.log(url + '::' + siteinfo.xpath); 494 495 if (special) { 496 liberator.open(url, liberator.NEW_TAB); 497 } else { 498 let req = new Request(url, null, { 499 encoding: srcEncode, 500 siteinfo: siteinfo, 501 args: { 502 args: args, 503 special: special, 504 count: count 505 } 506 }); 507 req.addEventListener('onException', $U.bind(this, this.onException)); 508 req.addEventListener('onSuccess', $U.bind(this, this.onSuccess)); 509 req.addEventListener('onFailure', $U.bind(this, this.onFailure)); 510 req.get(); 511 512 $U.echo('Loading ' + parsedArgs.name + ' ...', commandline.FORCE_SINGLELINE); 513 } 514 }, 515 // return {name: '', siteinfo: {}, str: ''} or null 481 for (let i = 0, len = parsedArgs.count; i < len; i++) { 482 483 let info = siteinfo[i]; 484 var url = info.url; 485 // see: http://fifnel.com/2008/11/14/1980/ 486 var srcEncode = info.srcEncode || 'UTF-8'; 487 var urlEncode = info.urlEncode || srcEncode; 488 489 var idxRepStr = url.indexOf('%s'); 490 if (idxRepStr > -1 && !parsedArgs.str) continue; 491 492 // via. lookupDictionary.js 493 var ttbu = Components.classes['@mozilla.org/intl/texttosuburi;1'] 494 .getService(Components.interfaces.nsITextToSubURI); 495 url = url.replace(/%s/g, ttbu.ConvertAndEscape(urlEncode, parsedArgs.str)); 496 $U.log(url + '[' + srcEncode + '][' + urlEncode + ']::' + info.xpath); 497 498 if (bang) { 499 liberator.open(url, liberator.NEW_TAB); 500 } else { 501 let req = new Request(url, null, { 502 encoding: srcEncode, 503 siteinfo: info, 504 args: { 505 args: args, 506 bang: bang, 507 count: count 508 } 509 }); 510 req.addEventListener('onException', $U.bind(this, this.onException)); 511 req.addEventListener('onSuccess', $U.bind(this, this.onSuccess)); 512 req.addEventListener('onFailure', $U.bind(this, this.onFailure)); 513 req.get(); 514 } 515 $U.echo('Loading ' + parsedArgs.names + ' ...', commandline.FORCE_SINGLELINE); 516 } 517 }, 518 // return {names: '', str: '', count: 0, siteinfo: [{}]} 516 519 parseArgs: function(args) { 517 520 518 if (!args) return null; 521 var self = this; 522 var ret = {}; 523 ret.names = ''; 524 ret.str = ''; 525 ret.count = 0; 526 ret.siteinfo = []; 527 528 if (!args) return ret; 519 529 520 530 var arguments = args.split(/ +/); 521 531 var sel = $U.getSelectedString(); 522 532 523 if (arguments.length < 1) return null; 524 525 var siteName = arguments.shift(); 526 var str = (arguments.length < 1 ? sel : arguments.join()).replace(/[\n\r]+/g, ''); 527 var siteinfo = this.getSite(siteName); 528 529 return {name: siteName, siteinfo: siteinfo, str: str}; 533 if (arguments.length < 1) return ret; 534 535 ret.names = arguments.shift(); 536 ret.str = (arguments.length < 1 ? sel : arguments.join()).replace(/[\n\r]+/g, ''); 537 538 ret.names.split(',').forEach(function(name) { 539 let site = self.getSite(name); 540 if (site) { 541 ret.count++; 542 ret.siteinfo.push(site); 543 } 544 }); 545 546 return ret; 530 547 }, 531 548 getSite: function(name) { … … 540 557 541 558 var url, escapedUrl, xpath, doc, html; 559 $U.debug('success!!!' + res.request.url); 542 560 543 561 try {
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)