in lib/twitter_cldr/utils/range_set.rb [289:317]
def flatten
return if ranges.size <= 1
sorted_ranges = ranges.sort do |a, b|
if is_numeric_range?(a) && is_numeric_range?(b)
a.first <=> b.first
else
1
end
end
new_ranges = [sorted_ranges.first]
sorted_ranges.each do |range|
previous_range = new_ranges.pop
if adjacent?(previous_range, range) || overlap?(previous_range, range)
new_ranges.push(
[range.first, previous_range.first].min..[range.last, previous_range.last].max
)
else
new_ranges.push(previous_range)
new_ranges.push(range)
end
end
@ranges = new_ranges
end