class Spruz::LinesFile
Attributes
filename[RW]
line_number[R]
Public Class Methods
for_file(file, line_number = nil)
click to toggle source
# File lib/spruz/lines_file.rb, line 17 def self.for_file(file, line_number = nil) obj = new(file.readlines, line_number) obj.filename = file.path obj end
for_filename(filename, line_number = nil)
click to toggle source
# File lib/spruz/lines_file.rb, line 11 def self.for_filename(filename, line_number = nil) obj = new(File.readlines(filename), line_number) obj.filename = filename obj end
for_lines(lines, line_number = nil)
click to toggle source
# File lib/spruz/lines_file.rb, line 23 def self.for_lines(lines, line_number = nil) new(lines, line_number) end
new(lines, line_number = nil)
click to toggle source
# File lib/spruz/lines_file.rb, line 27 def initialize(lines, line_number = nil) @lines = lines @lines.each_with_index do |line, i| line.extend LineExtension line.instance_variable_set :@line_number, i + 1 line.instance_variable_set :@lines_file, self end instance_variable_set :@line_number, line_number || (@lines.empty? ? 0 : 1) end
Public Instance Methods
each(&block)
click to toggle source
# File lib/spruz/lines_file.rb, line 73 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
# File lib/spruz/lines_file.rb, line 69 def empty? @lines.empty? end
file_linenumber()
click to toggle source
# File lib/spruz/lines_file.rb, line 91 def file_linenumber "#{filename}:#{line_number}" end
inspect()
click to toggle source
# File lib/spruz/lines_file.rb, line 117 def inspect "#<#{self.class}: #{to_s.inspect}>" end
last_line_number()
click to toggle source
# File lib/spruz/lines_file.rb, line 65 def last_line_number @lines.size end
line()
click to toggle source
# File lib/spruz/lines_file.rb, line 86 def line index = line_number - 1 @lines[index] if index >= 0 end
line_number=(number)
click to toggle source
# File lib/spruz/lines_file.rb, line 58 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
# File lib/spruz/lines_file.rb, line 95 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
# File lib/spruz/lines_file.rb, line 104 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
# File lib/spruz/lines_file.rb, line 46 def next! old = line_number self.line_number += 1 line_number > old ? self : nil end
previous!()
click to toggle source
# File lib/spruz/lines_file.rb, line 52 def previous! old = line_number self.line_number -= 1 line_number < old ? self : nil end
rewind()
click to toggle source
# File lib/spruz/lines_file.rb, line 41 def rewind self.line_number = 1 self end
to_s()
click to toggle source
# File lib/spruz/lines_file.rb, line 113 def to_s "#{line_number} #{line.chomp}" end