From b038c5fc96cefafdb8bc4df7226032a9214301ec Mon Sep 17 00:00:00 2001
From: anekos
Date: Sun, 8 Aug 2010 11:53:33 +0000
Subject: サブコマンドを整理して、より簡単に定義できるように
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@38226 d0d07461-0603-4401-acd4-de1884942a52
---
twittperator.js | 64 ++++++++++++++++++++++++++++++++++-----------------------
1 file changed, 38 insertions(+), 26 deletions(-)
(limited to 'twittperator.js')
diff --git a/twittperator.js b/twittperator.js
index d1aeefd..f6261f0 100755
--- a/twittperator.js
+++ b/twittperator.js
@@ -28,7 +28,7 @@ let PLUGIN_INFO =
twittperator
Twitter Client using ChirpStream
OAuth対応Twitterクライアント
- 1.0.7
+ 1.0.8
2.3
2.4
teramako
@@ -1558,56 +1558,68 @@ function loadPlugins() { // {{{
}
}; // }}}
+ const SubCommand = function(init) {
+ return {
+ __proto__: init,
+ get expr() {
+ return RegExp(
+ '^' +
+ this.command.map(function (c)
+ let (r = util.escapeRegex(c))
+ (/^[\W]$/(c) ? r : r + ' ')
+ ).join(/|/)
+ );
+ },
+ match: function(s) s.match(this.expr),
+ action: function(args) init.action(args.literalArg.replace(this.expr, '').trim())
+ };
+ };
+
const SubCommands = [ // {{{
- {
- match: function(s) s.match(/^\+/),
+ SubCommand({
command: ["+"],
description: "Fav a tweet",
- action: function(args) {
- let m = args.literalArg.match(/^\+.*#(\d+)/);
+ action: function(arg) {
+ let m = arg.match(/^.*#(\d+)/);
if (m)
favTwitter(m[1]);
},
completer: Completers.name_id_text
- },
- {
- match: function(s) s.match(/^\-/),
+ }),
+ SubCommand({
command: ["-"],
description: "Unfav a tweet",
- action: function(args) {
- let m = args.literalArg.match(/^\-.*#(\d+)/);
+ action: function(arg) {
+ let m = arg.match(/^.*#(\d+)/);
if (m)
unfavTwitter(m[1]);
},
completer: Completers.name_id_text
- },
- {
- match: function(s) s.match(/^@/),
+ }),
+ SubCommand({
command: ["@"],
description: "Show mentions or follower tweets",
- action: function(args) {
- if (args.literalArg.match(/^@.+/)) {
- showFollowersStatus(args.literalArg, true);
+ action: function(arg) {
+ if (arg.match(/^.+/)) {
+ showFollowersStatus(arg, true);
} else {
showTwitterMentions();
}
},
completer: Completers.name
- },
- {
- match: function(s) s.match(/^\?/),
+ }),
+ SubCommand({
command: ["?"],
description: "Twitter search",
- action: function(args) showTwitterSearchResult(args.literalArg),
+ action: function(arg) showTwitterSearchResult(arg),
completer: Completers.text
- },
- {
- match: function(s) s.match(/^(open\s|\/)/),
+ }),
+ SubCommand({
command: ["/"],
description: "Open link",
- action: function(args) openLink(args.literalArg),
+ action: function(arg) openLink(arg),
completer: Completers.link
- }
+ })
]; // }}}
function findSubCommand(s) { // {{{
@@ -1701,7 +1713,7 @@ function loadPlugins() { // {{{
return showFollowersStatus(null, args.bang);
if (args.bang) {
- let [subCmd] = findSubCommand(arg);
+ let [subCmd] = findSubCommand(arg) || [];
if (subCmd)
subCmd.action(args);
} else {
--
cgit v1.2.3