Sha256: cf2870325d9bac416a92a5852984e57ade71279eba8d0f2d6607b4fc32978528
Contents?: true
Size: 728 Bytes
Versions: 1
Compression:
Stored size: 728 Bytes
Contents
module Potter module Enum def self.included(base) base.extend ClassMethods end module ClassMethods def next_id = @last_id ? @last_id += 1 : @last_id = 0 def const(name, id = next_id, description: nil) @last_id = id const_set(name, id) end def cast(value) case value when Integer new(value) when Symbol, String const_get(value) end end end def self.of(type) parent = self name = type.name.gsub("::", "") const_get(name) || const_set(type.name.gsub("::", ""), Class.new(type) do include parent end) end end def self.Enum(type) = Enum.of(type) end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
potter-0.1.0 | lib/potter/enum.rb |