どだい日本人には複数形なんて...って話の前に、その他のメソッドの動作も理解できていなかったのでコードを追ってみました。以下メモ。読んだのはCakePHP 1.3.6のInfratorです。
pluralize
singularize
1. 最後の単語が例外単語帳にマッチしたらそれを返す
2. 単語全体が変更なしグループにマッチしたら何もせずに返す
3. ルールを一つずつ当てはめていき、マッチしたら実行して返す
まあ、この二つは想像通りというか、パターンは複雑だけどやっていることは単純明快。
humanize
1. 全ての"_"をスペースに
2. 各単語の最初の文字を大文字、それ以外を小文字に変換
camelize
1. humanize
2. スペースを取り除く
underscore
1. 先頭文字を除き、文字列中の大文字の前に"_"を挿入する
2. 全部小文字に
これがくせ者。大文字が続く場合に、各文字の前に"_"が入ります。
例)PostgreSQL => postgre_s_q_l
またこの正規表現が、戻り読み言明を使っていて最初読めなかったです。
/(?<=\w)([A-Z])/ まだまだ勉強不足ですな。
tableize
1. underscore
2. pluralize
classify
1. singularize
2. camelize
variable
1. underscore
2. camelize
3. 先頭の文字を小文字に
slug
1. アルファベットレターと数字以外の文字を" "に変換
2. 連続する" "を"_"に変換
3. 先頭と最後に"_"が一つ以上あった場合は取り除く
これも正規表現を読むのに苦労しました
/[^\s\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu
Unicode 文字プロパティ参照
おそらく結局
/[^\s\p{L}\p{Nd}]/mu
と一緒なのではと思うんですが、どうなんでしょう。
関心空間作ってます。他には駅ベル, NoMeMo Busters, Ramblin, TapBar, など。 興味あるのは Mac, Newton, iPhone, Django, nginx, PHP, CakePHP, Python, Objective-C, Smalltalk, Programmer, Dog, 阪神Tigers
2010-12-21
2010-12-16
PHPで簡単にコンソールにカラライズした出力をする方法
Lithiumの表示が綺麗だったので、その部分だけ簡単に使えるように抜き出してみました。PHPの変態的ともいえる配列の動作(辞書的+数字のミックス)を取り入れたんで、比較的使いやすくできました。以下のような感じで、緑色の"world"が表示されます。
console_out(array('Hello', 'green' => '"world"', '!')); echo "\n";
array() が余計かなぁ。ここがもっと簡単にかけるとうれしいんだけど。こんな風にかけたらうれしいな。
console_out(['Hello', 'green'=>'"world"', '!']); echo "\n";
登録:
投稿 (Atom)