each(&block)
click to toggle source
def each(&block)
empty? and return self
old_line_number = line_number
1.upto(last_line_number) do |number|
self.line_number = number
block.call(line)
end
self
ensure
self.line_number = old_line_number
end
empty?()
click to toggle source
def empty?
@lines.empty?
end
file_linenumber()
click to toggle source
def file_linenumber
"#{filename}:#{line_number}"
end
inspect()
click to toggle source
def inspect
"#<#{self.class}: #{to_s.inspect}>"
end
last_line_number()
click to toggle source
def last_line_number
@lines.size
end
line()
click to toggle source
def line
index = line_number - 1
@lines[index] if index >= 0
end
line_number=(number)
click to toggle source
def line_number=(number)
number = number.to_i
if number > 0 && number <= last_line_number
@line_number = number
end
end
match_backward(regexp, previous_after_match = false)
click to toggle source
def match_backward(regexp, previous_after_match = false)
begin
if line =~ regexp
previous_after_match and previous!
return $~.captures
end
end while previous!
end
match_forward(regexp, next_after_match = false)
click to toggle source
def match_forward(regexp, next_after_match = false)
begin
if line =~ regexp
next_after_match and next!
return $~.captures
end
end while next!
end
next!()
click to toggle source
def next!
old = line_number
self.line_number += 1
line_number > old ? self : nil
end
previous!()
click to toggle source
def previous!
old = line_number
self.line_number -= 1
line_number < old ? self : nil
end
rewind()
click to toggle source
def rewind
self.line_number = 1
self
end
to_s()
click to toggle source
def to_s
"#{line_number} #{line.chomp}"
end