めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

文字数の制御

MTで文字数を制御する方法が、なぜか2つあります。

  • MTEntryBodyのみで使える(と思われる)words
  • trim_to(どこでも使える?)

となっていますが、挙動が違うんです。wordsの方は、全角対応しています。trim_toは、半角換算になってしまいます。
そうすると、wordsをグローバルで使いたいじゃないですか。それで調べていこうと、grepをかけてから、気づいたんです。「words」っていたるところで使われていて、どうにもこうにも。おそらくは、I18Nあたりが関係しているかと思うんですけれど。

じゃあ、自作?と思ってJcodeをみていたら、「jfold」というメソッドがあるんです。すいません、知りませんでした。結構便利なんですが、やっぱり半角換算になってしまうんです。あとは、ここら辺をMTとともに、調べてみるべきなんでしょうね。

追記

MTEntryBodyのみで使える(と思われる)wordsは、Jcodeを使用するときには、MT::I18N::ja::first_n_jcodeですね。文字自体の制御をしているのは、substr_text_jcodeになるようです。
文字列を一度、EUCにして、文字一つづつ(というのは正しくないと思うけれど)に分解し、1バイト文字、2バイト文字を判断して、文字数をカウントしているのかな?と思います。

[\xA1-\xFE][\xA1-\xFE]
[\x8F][\xA1-\xFE][\xA1-\xFE]

とかあたりが、バイト数の判別だと思われ...。
こういうあたりは、PHPとか、Rubyだと楽なんでしょうかね。

追記2

で、「」というページにあるプラグインで、I18Nが色々な場所で使えるようになりますよ、と。
」みたら、2004年8月16日らしいです。作られたの...。