2009年07月09日

はてなのスーパーpre記法をseesaaでやる

入力したコードやはてな記法をそのまま表示する(スーパーpre記法)

を見まして、HTMLメタ文字→エスケープ文字変換javascriptを使えば同じような事ができるなーっと思って、Greasemonkeyを書いてみました。
hatena_pre_on_seesaa.user.js

このスクリプトを入れると、『hatena_pre』というボタンが記事記入部に追加されます。

ボタンを押すと、エディットエリアに記述された『>||』と『||<』を<pre class="code>"</pre>で書き換えて、その間のメタ文字をエスケープ処理します。
exp.

>||

fuction(){
alert("test");
}

||<

と記述されている場合は、

<html>
fuction(){
alert("test");
}
</html>

と変換されます。

変換の肝部分のスクリプトは下記になります。
◆script

//文字列からメタ文字を無くす
function meta_to_escape(str,flg) {
str = str.replace(/&/g,"&");
str = str.replace(/"/g,""");
str = str.replace(/\'/g,"'");
str = str.replace(//g,">");
if(flg == true)
{
str = str.replace(/\n/g,"
");
}
return str;
}
//はてな記法をpre記法に変換する
function hatena_to_pre(targetStr,flg)
{
var retStr = "";
var startPos_prev = 0;
var endPos_prev = -3;
var startPos = 0;
var endPos = 0;
while(1)
{
startPos = targetStr.indexOf(">||",endPos_prev+3)+3;//開始位置を取得
endPos = targetStr.indexOf("||<",endPos_prev+3);//終了位置を取得
if((startPos==-2) || (endPos==-1))
{//終わり
//残りの文字列を出力
retStr += targetStr.substring(endPos_prev+3,targetStr.length);
break;
}else{//スーパーpre記法の間を出力
if(endPos_prev+3 != startPos-3)
{
retStr += targetStr.substring(endPos_prev+3,startPos-3);
}
}

var tmpStr = meta_to_escape(targetStr.substring(startPos,endPos),flg);
retStr += "
"+tmpStr+"
";

startPos_prev = startPos;
endPos_prev = endPos;
}

return retStr;
}
function clickChange(tagID)
{
$("#"+tagID).val(hatena_to_pre($("#"+tagID).val(),false));
}


他のブログサービスとかにも使えるようにするには、clickChangeの引数を調整すれば良いかと
思います。 ご利用はご自由にどうぞーー。

「はてなのモノマネするんだったら、はてなにブログ移行すればいいじゃん」というツッコミはなしで。


posted by purigen at 15:12| Comment(0) | TrackBack(0) | Greasemonkey | このブログの読者になる | 更新情報をチェックする
この記事へのコメント

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。