Class: Lookout::Diff::Range

Inherits:
Object show all
Includes:
Enumerable
Defined in:
lib/lookout/diff/range.rb

Direct Known Subclasses

Algorithms::Difflib::Position::To

Instance Method Summary collapse

Constructor Details

#initialize(items, range = 0...items.size) ⇒ Range

Returns a new instance of Range.



6
7
8
# File 'lib/lookout/diff/range.rb', line 6

def initialize(items, range = 0...items.size)
  @items, @range = items, range.exclude_end? ? range.begin..range.end - 1 : range
end

Instance Method Details

#+(other) ⇒ Object



38
39
40
# File 'lib/lookout/diff/range.rb', line 38

def +(other)
  self.class.new(items, range.begin..other.range.end)
end

#==(other) ⇒ Object



80
81
82
# File 'lib/lookout/diff/range.rb', line 80

def ==(other)
  range == other.range and items == other.items
end

#[](index) ⇒ Object



68
69
70
# File 'lib/lookout/diff/range.rb', line 68

def [](index)
  items[index]
end

#at(range) ⇒ Object



34
35
36
# File 'lib/lookout/diff/range.rb', line 34

def at(range)
  self.class.new(items, range)
end

#beginObject



72
73
74
# File 'lib/lookout/diff/range.rb', line 72

def begin
  range.begin
end

#begin_after(other) ⇒ Object



26
27
28
# File 'lib/lookout/diff/range.rb', line 26

def begin_after(other)
  self.class.new(items, other.range.end + 1..range.end)
end

#begin_at(index) ⇒ Object



42
43
44
# File 'lib/lookout/diff/range.rb', line 42

def begin_at(index)
  self.class.new(items, index..range.end)
end

#begins_before?(other) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/lookout/diff/range.rb', line 18

def begins_before?(other)
  range.begin < other.range.begin
end

#eachObject



50
51
52
53
54
55
# File 'lib/lookout/diff/range.rb', line 50

def each
  range.each do |index|
    yield items[index]
  end
  self
end

#each_with_indexObject



57
58
59
60
61
62
# File 'lib/lookout/diff/range.rb', line 57

def each_with_index
  range.each do |index|
    yield items[index], index
  end
  self
end

#empty?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/lookout/diff/range.rb', line 10

def empty?
  size < 1
end

#endObject



76
77
78
# File 'lib/lookout/diff/range.rb', line 76

def end
  range.end
end

#end_at(index) ⇒ Object



46
47
48
# File 'lib/lookout/diff/range.rb', line 46

def end_at(index)
  self.class.new(items, range.begin..index)
end

#end_before(other) ⇒ Object



30
31
32
# File 'lib/lookout/diff/range.rb', line 30

def end_before(other)
  self.class.new(items, range.begin...other.range.begin)
end

#ends_after?(other) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/lookout/diff/range.rb', line 22

def ends_after?(other)
  range.end > other.range.end
end

#inspectObject



84
85
86
# File 'lib/lookout/diff/range.rb', line 84

def inspect
  '%p[%p]' % [items, range]
end

#sizeObject



14
15
16
# File 'lib/lookout/diff/range.rb', line 14

def size
  range.end - range.begin + 1
end

#to_itemsObject



64
65
66
# File 'lib/lookout/diff/range.rb', line 64

def to_items
  items[range]
end