My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
EmoticonSupport  

# Think about emoticon support

Introduction

MTOS + EmoticonButtonプラグイン(http://www.luckypines.com/mt/2008/05 /mt.html) では絵文字を入力でき、TypeCast から AtomAPI 経由で記事を取得する と、TypeCastの絵文字記法(ex: [E:sun])で出力される。

これを TypeCast::Emoticon::Encode/Decode を使用して、TypeCast でも各キャリ アに応じた文字コードで絵文字を表示できるように変換する。

変換するタイミングについて

案1: MTOSのトランスフォーマー コールバック

吉松さん案 (http://groups.google.com/group/typecastmobile/browse_thread/thread/5eefcec0224cc6d)

MT::build_pageを使うようにコードを変えてみて、MTOSのトランスフォーマー コールバックを利用する。

メリット

  • テンプレートに絵文字記法を記述できる
  • rewrite_content の処理前に、MTタグ処理済の HTML のみをキャッシュする実装が可能

デメリット(懸念・問題)

  • build_pageに引数として渡せないので、%condが役立っておらず、EntryIfExtendedとかのあたりが動かない。対応策は、
    • タグを実装する
    • たまたMTOS側でMT::Templateにconditionとかいうインスタンスメソッドを追加
  • HTML 全体をまるっと変換するため、絵文字の img タグ(TC::Emoticon::Encode::XHTMLで出力される)が予期せぬ場所(a.title, img.alt などの HTML 要素の属性値)に挿入されてしまうのを防ぐのがむずかしい

案2: 各MTタグの処理内

MT タグに追加属性を設けて(emoticon="1")、各タグで処理する。post_process_handler?

メリット

  • 絵文字を出力する場所をコントロールできる

デメリット(懸念・問題)

  • テンプレートに絵文字記法で記述できない(任意の場所に絵文字を出すためには別途がんばる必要がある)
  • 実装上の無駄が結構ある(TypePadがこの方法をとっている。余計なことをしている)
  • MT タグ処理中に UserAgent ごとに変更する必要のあるテンプレートが出来上がってしまうのでキャッシュしづらい(キャッシュが無駄に多くなる)
    • TypePad ではテンプレートを2回処理するようにして
      • 1回目: 通常のMTタグ展開 + 絵文字が記述可能なMTタグの場合
        <mtemoticon>
        </mtemoticon>
        で囲んだ状態で結果を生成
      • キャッシュ
      • 2回目: MTEmoticon 内を絵文字変換
    • というまどろっこしいことをやっている。。もっとシンプルにしたい。。。

Sign in to add a comment
Powered by Google Project Hosting