del.icio.us extension 日本語対応

  • 注意。URI encoded 後の長さなのか UTF-8 のバイト長なのかいまいちよくわかりません。UTF-8 だと思うけど Javascript で取得する方法がわからなかった。

公式版では extended に記述された文字数がカウントされるようになっているのですが、実際は URI encode 後のバイト長で 255byte の制限がかかります。そのため、日本語を入力したときにも対応できるように encode 後のバイト長をカウントするようにしたパッチを作ってみました。

delicious.jar の contents/add.js のファイルの最後の部分を以下のように変更してください。

><

また、日本語終端処理をするわけではないので 255byte を超えないように入力してください。超えてしまうと、UTF-8 の文字シーケンスの途中で切られたゴミが登録されることがあります。そのゴミを XML パーサが処理しようとするとエラーになることがあるので不幸になります。

ライセンスはもとの extension のものをそのまま継承。

/**
 * Extended byte count patch 
 * License Version: MPL 1.1/GPL 2.0/LGPL 2.1
 */

/**
 * Update extended field's length info when the field is changed.
 */
function extendedModified()
{
    length = getEncodedLength(document.getElementById("extended").value);
    document.getElementById("extended-label").value = length + " / 255";
}

/**
 * Get encoded byte count
 */
function getEncodedLength(text)
{
    count = 0
    for (i=0; i<text.length; i++) {
        n = encodeURIComponent(text.charAt(i));
        if (n.length < 4) count++;
        else count += n.length / 3;
    }

    return count;
}