aboutsummaryrefslogtreecommitdiffstats
path: root/commandBookmarklet.js
diff options
context:
space:
mode:
authorjanus_wel2008-12-11 07:18:17 +0000
committerjanus_wel2008-12-11 07:18:17 +0000
commit76275303274571b24210d2cbd6b06eb12f37e16e (patch)
tree3d7b26f6851ff3f33d67c779d05108fdcf4e02e8 /commandBookmarklet.js
parent9dd574cb23d91f9a6f7e4cefbc7bb6e59e7be0de (diff)
downloadvimperator-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.js93
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: