Sha256: 2535854c1dbee129d85b32894ef9f758b11f19788cc2523b217b2cd5c8f87b61

Contents?: true

Size: 996 Bytes

Versions: 97

Compression:

Stored size: 996 Bytes

Contents

# This class is used in `switch` statements.  Easy pattern matching, so instead
# of `if index_path.section == N && index_path.row = X`, you can use
# `when IndexPath[section, row]`.
#
# Example:
#
#     case index_path
#     when IndexPath[0, 0]  # first section, first row
#     when IndexPath[1]     # second section, any row
#     when IndexPath[2, 0..N]  # third section, 0..Nth rows
#     when IndexPath[2]     # all other in third section
#     end
#
class IndexPath

  def self.[] *values
    IndexPath.new values
  end

  def initialize values
    @values = values
  end

  def === other
    return true if super

    if other.is_a? NSIndexPath
      other = other.to_a
    end

    if other.is_a? Enumerable
      ret = true
      other_i = 0
      @values.each do |val|
        next_val = other[other_i]
        other_i += 1
        unless val == true || val === next_val
          ret = false
          break
        end
      end

      return ret
    end
    return false
  end

end

Version data entries

97 entries across 97 versions & 1 rubygems

Version Path
sugarcube-1.5.8 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.5.7 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.5.6 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.5.5 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.5.4 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.5.3 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.5.2 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.5.1 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.5.0 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.4.6 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.4.5 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.4.4 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.4.3 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.4.2 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.4.1 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.4.0 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.3.11 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.3.10 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.3.9 lib/sugarcube-indexpath/indexpath.rb
sugarcube-1.3.8 lib/sugarcube-indexpath/indexpath.rb