ブランチ作ってやってみたよ!podはまだ書いてません><
ブランチはこちら↓
changesetはこちら↓
http://coderepos.org/share/changeset/7172
ほとんどKDDIJISからのコピペなんだけど、ちょっとだけ違います。
(関数とかバリバリコピペでDRYじゃないので、どうしましょうか>id:tokuhirom)
まずはAirHから送られてくる絵文字入りメールの仕様ですが、AirHのメールの本文は基本的にiso-2022-jpなんだけど、DoCoMo互換の絵文字だけはそのまんまのshiftjisでくるため、そこの部分だけをうまいこと変換してやらなくちゃならない。(KDDIJIS.pmはバイトをずらしたりしてるけど、その部分の処理がAirHJIS.pmと違う。)
例えば、[ISO]をiso-2022-jpで、[SJIS]を絵文字とすると
[ISO][ISO][ISO][ISO][SJIS]、[ISO][ISO][ISO][ISO][SJIS][ISO][SJIS]
なんて感じのメールになってる。
で、実際のAirHJIS.pmの動作としては以下のようになってます。
decodeするときは、[SJIS]にマッチするものだけshiftjisのままにしておきつつ、[ISO]の部分だけshiftjisに変換し、最終的にx-sjis-docomo-rawを使ってdecodeしています。
encodeするときは、まずx-sjis-docomo-rawでencodeしたあとに、1文字ずつDoCoMo互換の絵文字の領域のものだったそのまま残して、それ以外の文字であったらiso-2022-jpに変換していくという処理をしています。
まぁ、そのままですね。
どうでしょう>Encode::JP::Mobile's authors