rangify

in lib/twitter_cldr/utils/range_set.rb [32:62]


        def rangify(list, compress = false)
          last_item = nil

          list.sort.inject([]) do |ret, item|
            if last_item
              diff = item - last_item

              if diff > 0
                if diff == 1
                  ret[-1] << item
                else
                  ret << [item]
                end

                last_item = item
              end
            else
              ret << [item]
              last_item = item
            end

            ret
          end.map do |sub_list|
            if compress && sub_list.size == 1
              sub_list.first
            else
              sub_list.first..sub_list.last
            end
          end
        end