Class: Gendered::Name

Inherits:
Object
  • Object
show all
Defined in:
lib/gendered/name.rb

Constant Summary collapse

VALID_GENDERS =
[:male, :female]

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#valueObject (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

Returns:

  • (Boolean)


61
62
63
64
# File 'lib/gendered/name.rb', line 61

def female?
  return :not_guessed unless guessed?
  gender == :female
end

#genderObject



52
53
54
# File 'lib/gendered/name.rb', line 52

def gender
  @gender || :not_guessed
end

#gender=(value) ⇒ Object

Raises:

  • (ArgumentError)


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!(options = {})
  Guesser.new(self, options).guess!
  gender
end

#guessed?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/gendered/name.rb', line 15

def guessed?
  !!@gender
end

#male?Boolean

Returns:

  • (Boolean)


56
57
58
59
# File 'lib/gendered/name.rb', line 56

def male?
  return :not_guessed unless guessed?
  gender == :male
end

#probabilityObject



31
32
33
# File 'lib/gendered/name.rb', line 31

def probability
  @probability || :unknown
end

#probability=(value) ⇒ Object

Raises:

  • (ArgumentError)


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_sizeObject



42
43
44
# File 'lib/gendered/name.rb', line 42

def sample_size
  @sample_size || :unknown
end

#sample_size=(value) ⇒ Object

Raises:

  • (ArgumentError)


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