どだい日本人には複数形なんて...って話の前に、その他のメソッドの動作も理解できていなかったのでコードを追ってみました。以下メモ。読んだのは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
と一緒なのではと思うんですが、どうなんでしょう。
0 件のコメント:
コメントを投稿