Sha256: 6e31382d12b86bac2ca9150ef8175c2161325f9d206a2adc79b2610c8c856397

Contents?: true

Size: 1.16 KB

Versions: 8

Compression:

Stored size: 1.16 KB

Contents

# -*- coding: utf-8 -*-
#
# @file 
# @brief
# @author ongaeshi
# @date   2013/05/03

require 'milkode/common/util'

module Milkode
  class FastGotoline
    def initialize(gotolines, yaml)
      @gotolines = gotolines
      @yaml      = yaml
    end

    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

    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
    
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
milkode-1.5.0 lib/milkode/grep/fast_gotoline.rb
milkode-1.4.0 lib/milkode/grep/fast_gotoline.rb
milkode-1.3.0 lib/milkode/grep/fast_gotoline.rb
milkode-1.2.0 lib/milkode/grep/fast_gotoline.rb
milkode-1.1.0 lib/milkode/grep/fast_gotoline.rb
milkode-1.0.2 lib/milkode/grep/fast_gotoline.rb
milkode-1.0.0 lib/milkode/grep/fast_gotoline.rb
milkode-0.9.9.9 lib/milkode/grep/fast_gotoline.rb