Sha256: aa91e159552b364141f3a86f366c18d50c4fdbfb4f19e948bc666e5a761516fa
Contents?: true
Size: 1.16 KB
Versions: 1
Compression:
Stored size: 1.16 KB
Contents
module Genderize class Gender include I18n # Maps the gender abbreviation name to the full name for translation keys ABR_KEY_NAME_MAPPING = { "" => "blank", "m" => "masculine", "f" => "feminine" } 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? ? '' : 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 blank? abbr == "" end def to_s abbr end def ==(val) abbr.to_s == val.to_s end private def translation_for(key) I18n.t("genderize.#{key}.#{ABR_KEY_NAME_MAPPING[abbr]}") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
genderize-0.0.8 | lib/genderize/gender.rb |