diff options
author | janus_wel | 2008-12-11 07:18:17 +0000 |
---|---|---|
committer | janus_wel | 2008-12-11 07:18:17 +0000 |
commit | 76275303274571b24210d2cbd6b06eb12f37e16e (patch) | |
tree | 3d7b26f6851ff3f33d67c779d05108fdcf4e02e8 /commandBookmarklet.js | |
parent | 9dd574cb23d91f9a6f7e4cefbc7bb6e59e7be0de (diff) | |
download | vimperator-plugins-76275303274571b24210d2cbd6b06eb12f37e16e.tar.bz2 |
refactoring.
add PLUGIN_INFO.
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@26372 d0d07461-0603-4401-acd4-de1884942a52
Diffstat (limited to 'commandBookmarklet.js')
-rw-r--r-- | commandBookmarklet.js | 93 |
1 files changed, 53 insertions, 40 deletions
diff --git a/commandBookmarklet.js b/commandBookmarklet.js index 989c301..e8a3b51 100644 --- a/commandBookmarklet.js +++ b/commandBookmarklet.js @@ -2,49 +2,62 @@ * bookmarklet wo command ni suru plugin * * @author halt feits <halt.feits@gmail.com> - * @version 0.6.0 + * @version 0.6.1 */ -(function(){ - var filter = "javascript:"; - var items = bookmarks.get(filter); - - if (items.length == 0) { - if (filter.length > 0) { - liberator.echoerr('E283: No bookmarks matching "' + filter + '"'); - } else { - liberator.echoerr("No bookmarks set"); - } - } - - const regex = /[^a-zA-Z]/; - items.forEach(function(item) { - var [url, title] = [item.url, item.title]; - var desc = title; - title = escape( title.replace(/ +/g,'').toLowerCase() ); - if (regex.test(title)) { - title = "bm"+title.replace(/[^a-zA-Z]+/g,''); - title = title.substr(0, title.length>50?50:title.length); - } - if (width(title) > 50) { - while (width(title) > 47) { - title = title.slice(0, -2); - } - title += "..."; - } - title = util.escapeHTML(title); - - var command = function () { liberator.open(url); }; +let PLUGIN_INFO = +<VimperatorPlugin> +<name>{NAME}</name> +<description>convert bookmarklets to command</description> +<description lang="ja">ブックマークレットをコマンドにする</description> +<author mail="halt.feits@gmail.com">halt feits</author> +<version>0.6.1</version> +<minVersion>2.0pre</minVersion> +<maxVersion>2.0pre</maxVersion> +<detail><![CDATA[ +== SYNOPSIS == +This plugin automatically convert bookmarklets to valid command for vimperator. +このプラグインはブックマークレットを vimpertor で実行可能なコマンドに自動的に変換します。 + +== COMMAND == +Nothing built-in command, but each bookmarklets convert to commands that start with "bml". +固有のコマンドはありませんが、それぞれのブックマークレットは "bml" ではじまるコマンドに変換されます。 + +== EXAMPLE == +"Hatena-Bookmark" -> bmlhatena-bookmark + +== KNOWN BUGS == +When title has non-ASCII characters, it convert to unaccountable command. +タイトルに ASCII 文字以外が含まれている場合、わけのわからないコマンドになります。 + +You should rewrite title of bookmarklet to ASCII characters, to escape this bug. +このバグを避けるためにブックマークレットのタイトルを ASCII 文字のみに書き換えることをおすすめします。 + +]]></detail> +</VimperatorPlugin>; + +( function () { + +let items = bookmarks.get('javascript:'); +if (!items.length) { + liberator.echoerr('No bookmarks set'); + return; +} + +for (let item in util.Array.iterator(items)) { commands.addUserCommand( - [title], - "bookmarklet : "+desc, - command, - { - shortHelp: "Bookmarklet", - } + [toValidCommandName(item.title)], + 'bookmarklet : ' + item.title, + function () { liberator.open(item.url); }, + { shortHelp: 'Bookmarklet' }, + false ); - }); +} + +function toValidCommandName(str) { + str = 'bml' + escape(str.replace(/ +/g, '').toLowerCase()).replace(/[^a-zA-Z]/g,''); + return str.substr(0, str.length > 50 ? 50 : str.length); +} - function width(str) str.replace(/[^\x20-\xFF]/g, " ").length; -})(); +} )(); // vim:sw=2 ts=2 et: |