Sha256: 98772c1e017c91994074facdd047f0e7122dbdabd8981e0d41f1ecb569e47791

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 KB

Contents

module Genderize
  class Gender
  
    include I18n
    
    attr_reader :abbr
    
    def initialize(abbr)
      unless abbr.blank? or abbr.to_s =~ /\A(f|m|female|male)\Z/i
        raise "Invalid abbreviation: '#{abbr}'" 
      end
      @abbr = abbr.blank? ? nil : abbr.to_s.first.downcase
    end
    
    def name
      @name ||= translation_for("name")
    end
  
    def subject
      @subject ||= translation_for("subject")
    end
    
    def object
      @object ||= translation_for("object")
    end
    
    def possessive
      @possessive ||= translation_for("possessive")
    end
    
    def casual
      @casual ||= translation_for("casual")
    end
    
    def capital_abbr
      abbr.capitalize
    end
  
    def male?
      abbr == 'm'
    end
  
    def female?
      abbr == 'f'
    end
  
    def to_s
      abbr
    end
  
    def ==(val)
      abbr.to_s == val.to_s
    end
  
    private
    
    def translation_for(key)
      case
      when male? then I18n.t("genderize.#{key}.masculine")
      when female? then I18n.t("genderize.#{key}.feminine")
      else
        nil
      end
    end
    
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
genderize-0.0.7 lib/genderize/gender.rb
genderize-0.0.6 lib/genderize/gender.rb