lib/raven/linecache.rb in sentry-raven-2.1.4 vs lib/raven/linecache.rb in sentry-raven-2.2.0
- old
+ new
@@ -1,27 +1,41 @@
module Raven
class LineCache
- class << self
- CACHE = {} # rubocop:disable Style/MutableConstant
+ def initialize
+ @cache = {}
+ end
- def valid_file?(path)
- lines = getlines(path)
- !lines.nil?
+ # Any linecache you provide to Raven must implement this method.
+ # Returns an Array of Strings representing the lines in the source
+ # file. The number of lines retrieved is (2 * context) + 1, the middle
+ # line should be the line requested by lineno. See specs for more information.
+ def get_file_context(filename, lineno, context)
+ return nil, nil, nil unless valid_path?(filename)
+ lines = Array.new(2 * context + 1) do |i|
+ getline(filename, lineno - context + i)
end
+ [lines[0..(context - 1)], lines[context], lines[(context + 1)..-1]]
+ end
- def getlines(path)
- CACHE[path] ||= begin
- IO.readlines(path)
- rescue
- nil
- end
- end
+ private
- def getline(path, n)
- return nil if n < 1
- lines = getlines(path)
- return nil if lines.nil?
- lines[n - 1]
+ def valid_path?(path)
+ lines = getlines(path)
+ !lines.nil?
+ end
+
+ def getlines(path)
+ @cache[path] ||= begin
+ IO.readlines(path)
+ rescue
+ nil
end
+ end
+
+ def getline(path, n)
+ return nil if n < 1
+ lines = getlines(path)
+ return nil if lines.nil?
+ lines[n - 1]
end
end
end