Class: Genderize::Gender

Inherits:
Object
  • Object
show all
Includes:
I18n
Defined in:
lib/genderize/gender.rb

Constant Summary collapse

ABR_KEY_NAME_MAPPING =

Maps the gender abbreviation name to the full name for translation keys

{ "" => "blank", "m" => "masculine", "f" => "feminine", "n" => "non_binary" }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(abbr) ⇒ Gender

Returns a new instance of Gender.



12
13
14
15
16
17
# File 'lib/genderize/gender.rb', line 12

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

Instance Attribute Details

#abbrObject (readonly)

Returns the value of attribute abbr.



10
11
12
# File 'lib/genderize/gender.rb', line 10

def abbr
  @abbr
end

Instance Method Details

#==(val) ⇒ Object



63
64
65
# File 'lib/genderize/gender.rb', line 63

def ==(val)
  abbr.to_s == val.to_s
end

#blank?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/genderize/gender.rb', line 55

def blank?
  abbr == ""
end

#capital_abbrObject



39
40
41
# File 'lib/genderize/gender.rb', line 39

def capital_abbr
  abbr.capitalize
end

#casualObject



35
36
37
# File 'lib/genderize/gender.rb', line 35

def casual
  @casual ||= translation_for("casual")
end

#female?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/genderize/gender.rb', line 47

def female?
  abbr == 'f'
end

#male?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/genderize/gender.rb', line 43

def male?
  abbr == 'm'
end

#nameObject



19
20
21
# File 'lib/genderize/gender.rb', line 19

def name
  @name ||= translation_for("name")
end

#non_binary?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/genderize/gender.rb', line 51

def non_binary?
  abbr == 'n'
end

#objectObject



27
28
29
# File 'lib/genderize/gender.rb', line 27

def object
  @object ||= translation_for("object")
end

#possessiveObject



31
32
33
# File 'lib/genderize/gender.rb', line 31

def possessive
  @possessive ||= translation_for("possessive")
end

#subjectObject



23
24
25
# File 'lib/genderize/gender.rb', line 23

def subject
  @subject ||= translation_for("subject")
end

#to_sObject



59
60
61
# File 'lib/genderize/gender.rb', line 59

def to_s
  abbr
end