def update_cache(filename, use_script_lines=false)
return nil unless filename
@@file_cache.delete(filename)
path = File.expand_path(filename)
if use_script_lines
list = [filename]
list << @@file2file_remap[path] if @@file2file_remap[path]
list.each do |name|
if !SCRIPT_LINES__[name].nil? && SCRIPT_LINES__[name] != true
begin
stat = File.stat(name)
rescue
stat = nil
end
lines = SCRIPT_LINES__[name]
@@file_cache[filename] = LineCacheInfo.new(stat, nil, lines, path, nil)
@@file2file_remap[path] = filename
return true
end
end
end
if File.exist?(path)
stat = File.stat(path)
elsif File.basename(filename) == filename
stat = nil
for dirname in $:
path = File.join(dirname, filename)
if File.exist?(path)
stat = File.stat(path)
break
end
end
return false unless stat
end
begin
fp = File.open(path, 'r')
lines = fp.readlines()
fp.close()
rescue
return nil
end
@@file_cache[filename] = LineCacheInfo.new(File.stat(path), nil, lines,
path, nil)
@@file2file_remap[path] = filename
return true
end