module Fias::Name::Split
Constants
- BRACKETS
- DOTWORD
- QUOTAS
Public Class Methods
split(name)
click to toggle source
# File lib/fias/name/split.rb, line 5 def split(name) words = sanitize(name).scan(Fias.word) words = cleanup_brackets(words) words = split_all_initials(words) words = split_all_dotwords(words) words .reject(&:blank?) .flatten .uniq end
Private Class Methods
cleanup_brackets(words)
click to toggle source
# File lib/fias/name/split.rb, line 23 def cleanup_brackets(words) words.map { |word, _| word.gsub(BRACKETS, '') } end
sanitize(name)
click to toggle source
# File lib/fias/name/split.rb, line 19 def sanitize(name) Unicode.downcase(name).gsub('ё', 'е').gsub(QUOTAS, '') end
split_all_dotwords(words)
click to toggle source
# File lib/fias/name/split.rb, line 42 def split_all_dotwords(words) words .map { |word, _| split_dotwords(word) || word } .compact end
split_all_initials(words)
click to toggle source
# File lib/fias/name/split.rb, line 27 def split_all_initials(words) words .map { |word, _| split_initials(word) || word } .compact .flatten end
split_dotwords(word)
click to toggle source
# File lib/fias/name/split.rb, line 48 def split_dotwords(word) return unless word =~ DOTWORD dotwords = word.gsub(DOTWORD, '\1 ') dotwords.split(' ').uniq.delete_if(&:blank?) end
split_initials(word)
click to toggle source
# File lib/fias/name/split.rb, line 34 def split_initials(word) m_matches = word.match(Fias::INITIALS) return m_matches.values_at(1, 3) if m_matches s_matches = word.match(Fias::SINGLE_INITIAL) return s_matches.values_at(2, 3) if s_matches end