Ruby で C言語ライクな enum を行うライブラリをつくった

RubyC言語ライクな enum をするライブラリをつくった。

インストール

$ gem install cstyle_enum

使い方

require "cstyle_enum"

class Color
    # enum or cstyle_enum
    Colors = enum {
        RED
        GREEN = 3
        BLUE
    }
end

Color::RED     # => 0
Color::GREEN   # => 3
Color::BLUE    # => 4
Color::Colors  # => {:RED=>0, :GREEN=>3, :BLUE=>4}

#enum のブロック内に定数を記述すると自動的にナンバリングされた定数が定義されます。
C言語と同様に = で代入すればその値から続けてナンバリングされます。
また #enum の戻り値は定義した定数の Hash が返ってきます。
ユーザコードはかなり書きやすくなっているんですが、実装がかなり闇になってる…。