direct_bookmark.jsのLDCでレートを扱えるようにしてみました

タグ名に日本語を使う軟弱ものの自分にとってはdirect_bookmark.jsはvimperatorなみにキラーアプリです。
コマンド入力→タグ入力→コメント入力→登録するまでの流れの中で感覚的にひっかかりがなくて、ホント気持ちよく使わせて頂いています。

【direct_bookmark】
http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/direct_bookmark.js

[機能]

LDCでレート操作できるように

LivedoorClipでレート機能を活用しているのでdirect_bookmark.jsでレートを投稿できるように手を加えました。
livedoor クリップブックマークレットでは、初期登録時にレート設定ができない点は前からとても気になっていたところです。

livedoor clip IncSearchと同じようにレートは「*」で扱うようにしました。

コメントの後ろに「*」をつけるとレート数になります。
勢いあまってたくさん「*」をつけた場合にタグやコメントに何かを加えるようなことをしようとも考えましたが、「じゃまくさいかも・・・」って思い踏みとどまりましたw

使用例

# レート設定はなしでPOST
:sbm [tag1][tag2]ほげほげコメント

# レート3を設定しPOST
:sbm [tag1][tag2]ほげほげコメント***

# いきおいあまっても大丈夫。フルレート(5)に設定
:sbm [tag1][tag2]すげぇ!!****************

差分コード

このコードだと、LivedoorClip以外も同時に使っている場合には、コメントに「*」が出てしまうと思います。

--- direct_bookmark_original.js	Tue Jul 01 12:38:21 2008
+++ direct_bookmark.js	Tue Jul 01 12:33:46 2008
@@ -1,6 +1,6 @@
 // Vimperator plugin: 'Direct Post to Social Bookmarks'
 // Version: 0.12
-// Last Change: 01-Jul-2008. Jan 2008
+// Last Change: 01-Jul-2008. Jan 2008
 // License: Creative Commons
 // Maintainer: Trapezoid <trapezoid.g@gmail.com> - http://unsigned.g.hatena.ne.jp/Trapezoid
 // Parts:
@@ -418,8 +418,15 @@
             loginPrompt:{ user:'', password:'apikey', description:'Enter username and apikey.\nyou can get "api-key" from\n\thttp://clip.livedoor.com/config/api' },
             entryPage:'http://clip.livedoor.com/page/%URL%',
             poster:function(user,password,url,title,comment,tags){
+                //id:guyon Add -Rate Support-
+                var rate = 0;
+                var starFullRate = 5;
+                if (comment.match(/\*+$/)){
+                    comment = RegExp.leftContext;
+                    rate = (RegExp.lastMatch.length > starFullRate)? starFullRate : RegExp.lastMatch.length;
+                }
                 var request_url = 'http://api.clip.livedoor.com/v1/posts/add?' + [
-                    ['url', url], ['description', title], ['extended', comment], ['tags', tags.join(' ')]
+                    ['url', url], ['description', title], ['extended', comment], ['rate', rate], ['tags', tags.join(' ')]
                 ].map(function(p) p[0] + '=' + encodeURIComponent(p[1])).join('&');
                 return Deferred.http({
                     method: "get",