Sha256: ef7dcc66714359b2eb922456793e9dbfc7b0b144a94e9f232d18601dba570b1a
Contents?: true
Size: 867 Bytes
Versions: 2
Compression:
Stored size: 867 Bytes
Contents
# encoding: utf-8 module EnumAttr module Mixin def enum_attr(attr, enums) raise "The secone param must be a array!" unless enums.is_a? Array if self.superclass == Object attr_accessor attr.to_sym end attr = attr.to_s enums.each do |enum| const_set("#{attr.upcase}_#{enum[2].upcase}", enum[1] ) class_eval(%Q{ def #{attr}_#{enum[2]}? #{attr} == #{enum[1]} end }) end # end: enums.each self.class_eval(%Q{ ENUMS_#{attr.upcase} = enums.collect{|item| [item[0], item[1]]} def self.#{attr}_name_by(arg) ENUMS_#{attr.upcase}.find{|option| option[1] == arg }[0] rescue "" end def #{attr}_name ENUMS_#{attr.upcase}.find{|option| option[1] == #{attr}}[0] rescue "" unless #{attr}.nil? end }) end end end Object.send :extend, EnumAttr::Mixin
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
enum_attr-1.0.2 | lib/enum_attr_base.rb |
enum_attr-1.0.1 | lib/enum_attr_base.rb |