Class: PersonNameParser
- Inherits:
-
Object
- Object
- PersonNameParser
- Defined in:
- app/services/person_name_parser.rb
Instance Attribute Summary collapse
-
#name_parts ⇒ Object
readonly
Returns the value of attribute name_parts.
Delegated Instance Attributes collapse
-
#first ⇒ Object
Alias for Name_parts#first.
-
#last ⇒ Object
Alias for Name_parts#last.
-
#middle ⇒ Object
Alias for Name_parts#middle.
-
#prefix ⇒ Object
Alias for Name_parts#prefix.
-
#suffix ⇒ Object
Alias for Name_parts#suffix.
Instance Method Summary collapse
- #abbreviated_name ⇒ Object
- #full_name ⇒ Object
-
#initialize(name) ⇒ PersonNameParser
constructor
Returns an open struct like :prefix => nil, :first => "Tom", :middle => nil, :last => "Januszewski", :suffix.
- #obfuscated_name ⇒ Object
- #simple_name ⇒ Object
- #to_party(party) ⇒ Object
- #to_s ⇒ Object
- #valid? ⇒ Boolean
Constructor Details
#initialize(name) ⇒ PersonNameParser
Returns an open struct like
:prefix => nil,
:first => "Tom",
:middle => nil,
:last => "Januszewski",
:suffix
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/services/person_name_parser.rb', line 13 def initialize(name) require 'nameable' if name.present? @name_parts = Nameable.parse name # Special case of detecting Haikunator names if @name_parts.first == 'Guest' @name_parts.last = [@name_parts.middle, @name_parts.last].map(&:presence).compact.join(' ') @name_parts.middle = nil end else @name_parts = OpenStruct.new end end |
Instance Attribute Details
#name_parts ⇒ Object (readonly)
Returns the value of attribute name_parts.
3 4 5 |
# File 'app/services/person_name_parser.rb', line 3 def name_parts @name_parts end |
Instance Method Details
#abbreviated_name ⇒ Object
31 32 33 34 35 36 |
# File 'app/services/person_name_parser.rb', line 31 def abbreviated_name str = [] str << @name_parts.first[0] + '.' if @name_parts.first str << @name_parts.last str.join.join(' ') end |
#first ⇒ Object
Alias for Name_parts#first
5 |
# File 'app/services/person_name_parser.rb', line 5 delegate :prefix, :first, :middle, :last, :suffix, to: :name_parts |
#full_name ⇒ Object
49 50 51 |
# File 'app/services/person_name_parser.rb', line 49 def full_name %i[prefix first middle last suffix].map { |k| name_parts.send(k).to_s.squish.presence }.compact.join(' ') end |
#last ⇒ Object
Alias for Name_parts#last
5 |
# File 'app/services/person_name_parser.rb', line 5 delegate :prefix, :first, :middle, :last, :suffix, to: :name_parts |
#middle ⇒ Object
Alias for Name_parts#middle
5 |
# File 'app/services/person_name_parser.rb', line 5 delegate :prefix, :first, :middle, :last, :suffix, to: :name_parts |
#obfuscated_name ⇒ Object
38 39 40 41 42 43 |
# File 'app/services/person_name_parser.rb', line 38 def np = [] np << @name_parts.first np << @name_parts&.last&.first(1) + '.' if @name_parts.last np.join(' ') end |
#prefix ⇒ Object
Alias for Name_parts#prefix
5 |
# File 'app/services/person_name_parser.rb', line 5 delegate :prefix, :first, :middle, :last, :suffix, to: :name_parts |
#simple_name ⇒ Object
45 46 47 |
# File 'app/services/person_name_parser.rb', line 45 def simple_name %i[first middle last].map { |k| name_parts.send(k).to_s.squish.presence }.compact.join(' ') end |
#suffix ⇒ Object
Alias for Name_parts#suffix
5 |
# File 'app/services/person_name_parser.rb', line 5 delegate :prefix, :first, :middle, :last, :suffix, to: :name_parts |
#to_party(party) ⇒ Object
57 58 59 60 61 62 63 64 |
# File 'app/services/person_name_parser.rb', line 57 def to_party(party) party.prefix = name_parts.prefix&.first(10) party.first_name = name_parts.first&.first(255) party.middle_name = name_parts.middle&.first(255) party.last_name = name_parts.last&.first(255) party.suffix = name_parts.suffix&.first(10) party.full_name = full_name&.first(255) end |
#to_s ⇒ Object
53 54 55 |
# File 'app/services/person_name_parser.rb', line 53 def to_s full_name end |
#valid? ⇒ Boolean
27 28 29 |
# File 'app/services/person_name_parser.rb', line 27 def valid? [prefix, first, middle, last, suffix].any?(&:present?) end |