Sha256: ee899ab501b3c3fa46faa9a056735ddb0228804e6d144b05fb982c1ffce7c195
Contents?: true
Size: 1.25 KB
Versions: 2
Compression:
Stored size: 1.25 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", "n" => "non_binary" } attr_reader :abbr def initialize(abbr) unless abbr.blank? or abbr.to_s =~ /\A(f|m|n|female|male|non[ -_]?binary)\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 non_binary? abbr == 'n' 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
genderize-0.1.1 | lib/genderize/gender.rb |
genderize-0.1.0 | lib/genderize/gender.rb |