パスワードを忘れた? アカウント作成
39877 journal

etsavの日記: みんならくだになぁれ

日記 by etsav

(defun camelize (str)
  (mapconcat #'capitalize (split-word (downcase str)) ""))

(defun split-word (str &optional trail)
  (cond ((null str) (list trail))
        ((wordp str) (append (list str)
                             (if trail (split-word trail))))
        (t (append (split-word (substring str 0 -1)
                               (concat (substring str -1) trail))))))

(defun wordp (word)
  (or (numberp (string-match "^[0-9]+$" word))
      (and (not (string-match "[0-9]" word))
           (string= (car (last (split-string (spell-string word) " ")))
                    "correct"))))

えーとですね。

C++ でコード書いてて、 クラス名は camel case、 ヘッダ・ソースファイル名はクラス名小文字化+拡張子、 ってことにしてまして。

先月までの派遣先では、 emacs の auto insert で新ファイル作るとテンプレート挿入されるようにしといたのだけど、 クラス名は小文字化ファイルの basename そのままつっこんで、 毎回手直ししてたのです。 暇が出来たので、 そこを何とかしようと変換関数をやっつけで書いてみたり。

まぁやっつけですのでね、 spell-string 関数が動く事前提だったり、 ちょっと条件が厳しいとスタック食い潰したり、 前方から最長一致の単語を採用するので (camelize "alphabeta") の結果が "AlphaBeta" じゃなくて "AlphabetA" になったりしますがねぃ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー

読み込み中...