class Governator::NameParser
Parses a name into it's component parts
Example¶ ↑
name = "Firstname Two Middlenames 'Nick Name' Lastname, Suffix." name_parser = NameParser.new(name) parsed_name = name_parser.parse parsed_name.first_name # => "Firstname" parsed_name.middle_name # => "Two Middlenames" parsed_name.nickname # => "Nick Name" parsed_name.last_name # => "Lastname" parsed_name.suffix # => "Suffix"
Attributes
first[R]
last[R]
middle[R]
nickname[R]
original[R]
suffix[R]
Public Class Methods
new(original)
click to toggle source
Initialize a new NameParser
object
@param original [String] the original name to parse
# File lib/governator/name_parser.rb, line 19 def initialize(original) @original = original end
Public Instance Methods
parse()
click to toggle source
Parse the name into its component parts
@api public
@return [Governator::Name]
# File lib/governator/name_parser.rb, line 28 def parse split_name Governator::Name.new(original, first, middle, nickname, last, suffix) end
Private Instance Methods
detect_nickname()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 91 def detect_nickname match_data = parsing_copy.match(/\s["'][\w\s]+["']/) return unless match_data @nickname = match_data.to_s if match_data parsing_copy.sub!(nickname, '') nickname.sub!(' ', '') end
detect_suffix()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 100 def detect_suffix match_data = parsing_copy.match(/,\s\w+\.?/) return unless match_data @suffix = match_data.to_s if match_data parsing_copy.sub!(suffix, '') suffix.delete!(', ') end
first_middle_last()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 38 def first_middle_last @_first_middle_last ||= parsing_copy.split(' ') end
initialed_first_name?()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 61 def initialed_first_name? first_middle_last[0].include?('.') && first_middle_last[1].include?('.') end
parsing_copy()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 109 def parsing_copy @_parsing_copy ||= original.dup end
set_first_and_last()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 71 def set_first_and_last @first = first_middle_last.first @last = first_middle_last.last end
set_first_last_and_middle()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 84 def set_first_last_and_middle @first = first_middle_last.first @last = first_middle_last.last @middle = first_middle_last[1..-2].join(' ') end
set_name_with_initialed_first()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 77 def set_name_with_initialed_first @first = "#{first_middle_last.first} #{first_middle_last[1]}" @last = first_middle_last.last @middle = first_middle_last[2..-2].join(' ') end
split_name()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 43 def split_name detect_nickname detect_suffix if two_part_name? set_first_and_last elsif initialed_first_name? set_name_with_initialed_first elsif three_or_more_part_name? set_first_last_and_middle end end
three_or_more_part_name?()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 56 def three_or_more_part_name? first_middle_last.length >= 3 end
two_part_name?()
click to toggle source
@api private
# File lib/governator/name_parser.rb, line 66 def two_part_name? first_middle_last.length == 2 end