Sha256: 013df6bd853849340da84a3704df08bec4a7af09b9fafe0220e2ba580e6a4955
Contents?: true
Size: 1.61 KB
Versions: 1
Compression:
Stored size: 1.61 KB
Contents
module BelongsToEnum class Enum def Enum.add_item(key,value) @hash ||= {} @hash[key]=value end def Enum.method_missing(key, *args) @hash[key] || super end def Enum.respond_to?(key) return true if super(key) return @hash && @hash[key] end def Enum.each @hash.each {|key,value| yield(key,value)} end def Enum.map @hash.map {|key,value| yield(key,value)} end def Enum.keys @hash.values end def Enum.items_for_select @hash.sort{|a,b| a[1]<=>b[1]}.map{|i|[i[0].to_s.gsub("_", " ").capitalize,i[1]]} end def Enum.items warn "DEPRECIATED belongs_to_enum: Use pretty items instead" items_for_select end def Enum.get(value) @hash.key(value) end def Enum.display(value) get(value).to_s.gsub("_", " ").titleize end def Enum.raw_hash @hash end def self.create(name, parent, keys) # Check to see if this has already been defined... return if parent.const_defined?(name.to_s.camelize) klass = Class.new(Enum) parent.const_set(name.to_s.camelize, klass) if keys.respond_to? :raw_hash keys.raw_hash.each do |k,v| klass.add_item(k,v) end elsif(keys.is_a? Hash) keys.each do |k,v| klass.add_item(k,v) end #elsif(keys.respond_to? :raw_hash) # keys.send(:raw_hash).each do |k,v| # klass.add_item(k,v) # end else keys.each_with_index do |key, index| klass.add_item(key, index + 1) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
belongs_to_enum-0.2 | lib/belongs_to_enum/enum.rb |