ログ日記

作業ログと日記とメモ

yasnippetのphp-modeでクラス名を自動的に挿入するようにした

class ${1:`(replace-regexp-in-string
 "^_+" ""
 (mapconcat
  #'identity
  (split-string
   ((lambda (a)
      (substring a (let ((case-fold-search nil))
                     (string-match "\\\\(/[A-Z][a-zA-Z0-9]+\\\\)+$" a )
                     ))
      )
    (file-name-sans-extension (buffer-file-name))
    ) "/") "_"))`}
{
   public function __construct()
   {
      $0
   }
}
http://github.com/nishimura/minimal-yasnippet-php-mode/blob/master/php-mode/class

こんな感じで。
例えば /tmp/Framework/components/Data/FileIterator.php を開いているときのクラス名は Data_FileIterator になるようにしている。


で、このままでは大文字がないファイル名だとエラーになる。
エラー制御ってどうするのがいいんだろう。


# 動かしながらあれこれいじってたので、今見てみるとlambdaがすごく無駄な気がする…整形は後でしよう。