Class: Gendered::Name
- Inherits:
-
Object
- Object
- Gendered::Name
- Defined in:
- lib/gendered/name.rb
Constant Summary collapse
- VALID_GENDERS =
[:male, :female]
Instance Attribute Summary collapse
-
#value ⇒ Object
(also: #to_s)
readonly
Returns the value of attribute value.
Instance Method Summary collapse
- #female? ⇒ Boolean
- #gender ⇒ Object
- #gender=(value) ⇒ Object
- #guess!(options = {}) ⇒ Object
- #guessed? ⇒ Boolean
-
#initialize(value) ⇒ Name
constructor
A new instance of Name.
- #male? ⇒ Boolean
- #probability ⇒ Object
- #probability=(value) ⇒ Object
- #sample_size ⇒ Object
- #sample_size=(value) ⇒ Object
Constructor Details
#initialize(value) ⇒ Name
Returns a new instance of Name.
7 8 9 10 11 |
# File 'lib/gendered/name.rb', line 7 def initialize(value) @value = value @gender, @probability, @sample_size = nil, nil, nil end |
Instance Attribute Details
#value ⇒ Object (readonly) Also known as: to_s
Returns the value of attribute value.
5 6 7 |
# File 'lib/gendered/name.rb', line 5 def value @value end |
Instance Method Details
#female? ⇒ Boolean
61 62 63 64 |
# File 'lib/gendered/name.rb', line 61 def female? return :not_guessed unless guessed? gender == :female end |
#gender ⇒ Object
52 53 54 |
# File 'lib/gendered/name.rb', line 52 def gender @gender || :not_guessed end |
#gender=(value) ⇒ Object
46 47 48 49 50 |
# File 'lib/gendered/name.rb', line 46 def gender=(value) symbol = value.to_sym raise ArgumentError, "not a valid gender" unless VALID_GENDERS.include?(symbol) @gender = symbol end |
#guess!(options = {}) ⇒ Object
19 20 21 22 |
# File 'lib/gendered/name.rb', line 19 def guess!( = {}) Guesser.new(self, ).guess! gender end |
#guessed? ⇒ Boolean
15 16 17 |
# File 'lib/gendered/name.rb', line 15 def guessed? !!@gender end |
#male? ⇒ Boolean
56 57 58 59 |
# File 'lib/gendered/name.rb', line 56 def male? return :not_guessed unless guessed? gender == :male end |
#probability ⇒ Object
31 32 33 |
# File 'lib/gendered/name.rb', line 31 def probability @probability || :unknown end |
#probability=(value) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/gendered/name.rb', line 24 def probability=(value) decimal = BigDecimal(value.to_s) raise ArgumentError, "value not between 0.01 and 1.0" if decimal <= 0 || decimal > 1 @probability = decimal end |
#sample_size ⇒ Object
42 43 44 |
# File 'lib/gendered/name.rb', line 42 def sample_size @sample_size || :unknown end |
#sample_size=(value) ⇒ Object
35 36 37 38 39 40 |
# File 'lib/gendered/name.rb', line 35 def sample_size=(value) integer = Integer(value) raise ArgumentError, "value not greater than or equal to 0" if integer < 0 @sample_size = integer end |