Twitter のプロフィールページにおいて自己紹介欄のユーザー名の部分とハッシュタグにリンクを貼る Greasemonkey スクリプト

昨日のスクリプトの改良拡張版。

機能

Twitterの自己紹介欄(プロフィールページの右側)でよく「@fooもよろしくお願いします」や「#bar歓迎」というふうに、自分のサブ垢やBOT、よく使うハッシュタグを紹介しているのを見かける。このスクリプトは、その「foo」および「#bar」の部分に、タイムラインの表示と同じようにリンクを貼るもの。いちいちアドレスバーにコピペする手間を省く。
※ただし「@」や「#」がないと反応しません

ソース

// ==UserScript==
// @name           Twitter Append Link
// @namespace      http://d.hatena.ne.jp/Azr_pp/
// @include        http://twitter.com/*
// ==/UserScript==

(function () {
  var profile = document.getElementById('bio').childNodes;
  var sentence = profile[2].textContent;
  var target = sentence.match(/(@|#)\w*/g);

  var newSpan = profile[2].cloneNode(true);
  newSpan.textContent = "";

  var start = 0;
  var end = 0;
  for (var i = 0, l = target.length; i < l; i++) {
    if (target[i].search(/^@/) == 0) {
      var username = target[i].slice(1, target[i].length);
      var p_url = 'http://twitter.com/' + username;
      var p_link = document.createElement('a');
      p_link.setAttribute('href', p_url);
      p_link.appendChild(document.createTextNode(username));

      end = sentence.indexOf(target[i], start) + 1;

      newSpan.appendChild(document.createTextNode(sentence.slice(start, end)));
      newSpan.appendChild(p_link);

      start = end + target[i].length - 1;
    } else {
      var hashtag = target[i].slice(1, target[i].length);
      var h_url = 'http://twitter.com/#search?q=%23' + hashtag;
      var h_link = document.createElement('a');
      h_link.setAttribute('href', h_url);
      h_link.appendChild(document.createTextNode(target[i]));

      end = sentence.indexOf(target[i], start);

      newSpan.appendChild(document.createTextNode(sentence.slice(start, end)));
      newSpan.appendChild(h_link);

      start = end + target[i].length;
    }
  }
  newSpan.appendChild(document.createTextNode(sentence.slice(start)));

  profile[2].parentNode.replaceChild(newSpan, profile[2]);
})();