class Milkode::FastGotoline

Public Class Methods

new(gotolines, yaml) click to toggle source
# File lib/milkode/grep/fast_gotoline.rb, line 11
def initialize(gotolines, yaml)
  @gotolines = gotolines
  @yaml      = yaml
end

Public Instance Methods

get_text_lineno(path, no) click to toggle source
# File lib/milkode/grep/fast_gotoline.rb, line 34
def get_text_lineno(path, no)
  index = no - 1

  begin
    open(path, "r") do |file|
      file.each_with_index do |line, i|
        return line.chomp if i == index
      end
    end
  rescue Errno::ENOENT
    # ファイルが見つからない時もnilを返す
  end

  nil
end
search_and_print(stdout) click to toggle source
# File lib/milkode/grep/fast_gotoline.rb, line 16
def search_and_print(stdout)
  @gotolines.each do |gotoline|
    package_name, restpath = Util.divide_shortpath(gotoline[0][0])
    package                = @yaml.find_name(package_name)

    if package
      path          = File.join(package.directory, restpath)
      relative_path = Util.relative_path(path, Dir.pwd).to_s
      lineno        = gotoline[1]
      content       = get_text_lineno(path, lineno)

      if content          
        stdout.puts "#{relative_path}:#{lineno} #{content}"
      end
    end
  end
end