in lib/twitter_cldr/collation/collator.rb [96:144]
def explicit_collation_elements(code_points)
collation_elements, prefix_size, suffixes = @trie.find_prefix(code_points)
return unless collation_elements
code_points.shift(prefix_size)
non_starter_pos = 0
used_combining_classes = {}
while non_starter_pos < code_points.size && !suffixes.empty?
non_starter_code_point = code_points[non_starter_pos]
non_starter_metadata = TwitterCldr::Shared::CodePoint.get(non_starter_code_point)
unless non_starter_metadata
raise UnexpectedCodePointError, "'#{non_starter_code_point}' does not appear to be a valid Unicode code point"
end
combining_class = non_starter_metadata.combining_class.to_i
break if combining_class == 0 || used_combining_classes[combining_class]
used_combining_classes[combining_class] = true
new_collation_elements, _, new_suffixes = suffixes.find_prefix([non_starter_code_point])
if new_collation_elements
collation_elements = new_collation_elements
suffixes = new_suffixes
code_points.delete_at(non_starter_pos)
else
non_starter_pos += 1
end
end
collation_elements
end