Method: AtlasEngine::AddressValidation::Token::Synonyms#initialize
- Defined in:
- app/models/atlas_engine/address_validation/token/synonyms.rb
#initialize(tokens: []) ⇒ Synonyms
Returns a new instance of Synonyms.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'app/models/atlas_engine/address_validation/token/synonyms.rb', line 26 def initialize(tokens: []) raise ArgumentError, "Synonyms cannot be empty" if tokens.empty? @tokens = [] tokens_by_position = tokens.stable_sort_by(&:position).group_by(&:position) while tokens_by_position.values.any?(&:present?) current_group = [] starting_position = tokens_by_position.keys.first while tokens_by_position.key?(starting_position) token = T.must(tokens_by_position[starting_position]).shift current_group << token starting_position += T.must(token).position_length end @tokens << (current_group.one? ? current_group.first : current_group) tokens_by_position.compact_blank! # remove positions having no tokens end end |