Y's note

Web技術・プロダクトマネジメント・そして経営について

本ブログの更新を停止しており、今後は下記Noteに記載していきます。
https://note.com/yutakikuchi/

ギャル文字変換Bookmarklet

概要

ギャル文字も新しい日本語表記の一つだと勝手に思っています。
「ギャル文字の方が断然読みやすいです!」ギャルの中でも少数派だとは思っていますが、
そんな方のためにWebページのコンテンツをギャル文字に変換するスクリプトを書いてみました。
変換機能はbookmarkletとして提供します。方法は閲覧中のWebページでbookmarkletを実行するだけです。
※利用は自己責任でお願いします。また何かしら問題が発生したら提供を即中止します。

Bookmarklet

ブックマーク

ギャル文字変換bookmarklet
※上のリンク先に遷移し、表示されているリンクをbookmarkしてください。

bookmarkソース
javascript:void((function(){var%20s=document.createElement('script');s.setAttribute('src','http://mobiles-proxy.appspot.com/statics/js/v1/gmbookmarklet.js');s.setAttribute('id','gmbookmark');document.body.appendChild(s)})());

上のソースをそのままbookmarkに貼付けてもらっても大丈夫です。

変換後イメージ

某サイトのTopics(iPhone-Safari)

twitterのstatus(safari)

GitHub

https://github.com/yutakikuchi/JS/tree/master/gmconv
JSに詳しい方、修正点などありましたらご指摘いただけると助かります。
マルチバイトkeyのhashテーブルを基に変換処理をしているだけです。

ソースも一部blogに張っておきます。

bookmarkletから呼び出されるscript
if( !GM ) var GM = {};
if( !IE ) var IE = ( /*@cc_on!@*/0 ) ? true : false;
if( !JS ) var JS = {};
(function(){
    JS.util = {};
    JS.util.getTagName = function( tag ) {
        return document.getElementsByTagName( tag );
    }
    JS.util.$ = function( id ) {
        return document.getElementById( id );
    }
    JS.util.createElem = function( elem ) {
        return document.createElement( elem );
    }
})();

var meta = JS.util.getTagName( 'meta' );
var charset = 'utf-8';
var content,chars,reg;
for(var i=0; i<meta.length; i++ ){
    chars = meta[i].getAttribute( 'charset' );
    if( chars !== null ) {
        charset = chars;
        break;
    }
    content = meta[i].getAttribute( 'content' );
    if( content !== null ) {
        reg = /charset=(.*?)$/gi;
        content.match( reg );
        if( RegExp.$1 != '' && RegExp.$1 != null ) {
            charset =  RegExp.$1;
            break;
        }
    }
}
if( charset='t' ) charset = 'utf-8';
var script = JS.util.createElem( 'script' );
//script.setAttribute( 'src', 'gmconv_' + charset.toLowerCase() + '.js' );
script.setAttribute( 'src', 'http://mobiles-proxy.appspot.com/statics/js/v1/gmconv_' + charset.toLowerCase() + '.js' );
script.setAttribute( 'charset', charset );
script.setAttribute( 'id', 'gmconv' );
document.body.appendChild( script );
変換スクリプト
if( !GM ) var GM = {};
(function(){
GM.convert = function( data ) {
    var hash = {};
    hash[ 'あ' ] = '†の';
    hash[ 'ア' ] = '了';
    hash[ 'い' ] = 'レヽ'; 
    hash[ 'イ' ] = 'ィ';
    hash[ 'う' ] = 'ぅ';
    hash[ 'ウ' ] = '宀';
    hash[ 'え' ] = 'ぇ'; 

(略)

    for( var i in hash ) {
        var reg = new RegExp( i, 'g' );
        data = data.replace( reg, hash[i] );
    }
    return data;
}
})();
var body  = JS.util.getTagName( 'body' );
if( typeof( body[0].innerHTML ) !== 'undefined' ) {
    body[0].innerHTML = GM.convert( body[0].innerHTML );
}

対応文字

  1. カタカナ
  2. ひらがな
  3. 漢字(一部)

文字コード

変換したい元のページの文字コードが以下のものであれば変換可能としています。

  1. UTF-8
  2. EUC-JP
  3. Shift_JIS
  4. ISO-2022-JP

対応ブラウザ

Macのブラウザでテストをしています。以下のブラウザではほとんどのページが変換可能であることを確かめました。

  1. Mobile Safari(iPhone)
  2. Safari
  3. FireFox
  4. Chrome ※2011/2/28 動作が微妙です
  5. Opera