znzの日記

|

2006-10-08

initializeに色つけ

typoを見つけやすくするためにinitializeの色をキーワード(defとか)と同じ色にする。

  (eval-after-load "ruby-mode"
    '(setq ruby-font-lock-keywords
           (append
            '(("\\<initialize\\>" . font-lock-keyword-face))
            ruby-font-lock-keywords)))

はてなバグってるのか「"」が「&quot;」になってしまっています。

2006-09-24

「はてなダイアリーキーワードふりがなリスト」をSKKの辞書に変換

はてなダイアリーキーワードふりがなリストを公開しました - はてなダイアリー日記の「はてなダイアリーキーワードふりがなリスト」をSKKの辞書に変換すれば流行語辞書みたいな感じで便利なんじゃないかと思って、変換するスクリプトを作ってみた。

続きを読む

2006-09-18

too many arguments for format string

はてなダイアリーの話。

$DEBUGtrueの状態で「"%d" % [1, 2]」のように引数が多いと「too many arguments for format string」というArgumentErrorになります。

これは本当に引数の数を間違えたときにわかるのはうれしいのですが、gettextなどの翻訳した文字列で意図的に引数を無視している時などではうれしくありません。

そういう場合は「"%1$d" % [1, 2]」のように引数指定というものを使うと回避できます。

Ruby-GetText-Packageを使っているのなら「String#%」がRuby-GetText-Packageの中で再定義されているので「"%{hoge}" % { :hoge => 1, :fuga => 2}」のようにHashを使う方がおすすめです。

2006-08-20

[] rstrip

以下のスクリプトを実行するとどういう出力になるでしょうか?

p ["\0\n".rstrip,"\n\0".rstrip]

[] lstrip,strip

lstripstripだとどうでしょうか?

p ["\0\n".lstrip,"\n\0".lstrip]
p ["\0\n".strip,"\n\0".strip]

2006-07-13

夏休みの宿題 -- ポーランド記法の解答例

出来るだけ正規表現だけでがんばってみた実装例です。

\g<name>を使っているので、1.8では動かなくて、鬼車が入っている1.9以降じゃないとダメです。

def pre_to_post_re(exp)
  exp.gsub(/
        (?<a>
         [+\-*\/]\s+\g<a>\s+\g<a>
         | \d+
         | \w+){0}
        (?<op>[+\-*\/])\s+(?<args>\g<a>\s+\g<a>)
         | \d+
         | \w+
      /x) do
    if $~[:op]
      "#{pre_to_post_re($~[:args])} #{$~[:op]}"
    else
      $&
    end
  end
end
p pre_to_post_re("* + 0 1 - 2 3")
p pre_to_post_re("/ * 1 - 3 4 + 5 6")
p pre_to_post_re("- + 1 / 2 2 + 3 * 4 5")

def post_to_pre_re(exp)
  pre_to_post_re(exp.reverse).reverse
end
p post_to_pre_re("0 1 + 2 3 - *")
p post_to_pre_re("1 3 4 - * 5 6 + /")
p post_to_pre_re("1 2 2 / + 3 4 5 * + -")
|