Sha256: a2c572fa49b56d9bd300e085a751553db4498ae3f66f14e7600d524bd1b8be5a

Contents?: true

Size: 1.07 KB

Versions: 3

Compression:

Stored size: 1.07 KB

Contents

module Genderize
  class Gender
  
    include I18n
    
    attr_reader :abbr
    
    def initialize(abbr)
      raise "Invalid abbreviation: '#{abbr}'" unless abbr.blank? or abbr.to_s =~ /\A(f|m)\Z/i
      @abbr = abbr.blank? ? nil : abbr.to_s.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

3 entries across 3 versions & 1 rubygems

Version Path
genderize-0.0.5 lib/genderize/gender.rb
genderize-0.0.4 lib/genderize/gender.rb
genderize-0.0.3 lib/genderize/gender.rb