class Gitdocs::Search
Constants
- RepoDescriptor
- SearchResult
Public Class Methods
new(repositories)
click to toggle source
@param [Array<Gitdocs::Repository>] repositories
# File lib/gitdocs/search.rb, line 14 def initialize(repositories) @repositories = repositories end
search(term)
click to toggle source
@param [String] term @return (see search
)
# File lib/gitdocs/search.rb, line 9 def self.search(term) new(Share.all.map { |x| Repository.new(x) }).search(term) end
Public Instance Methods
search(term)
click to toggle source
@param [String] term @return [Hash<RepoDescriptor, Array<SearchResult>>]
# File lib/gitdocs/search.rb, line 20 def search(term) results = {} @repositories.each_with_index do |repository, index| descriptor = RepoDescriptor.new(repository.root, index) results[descriptor] = search_repository(repository, term) end results.delete_if { |_key, value| value.empty? } end
Private Instance Methods
search_repository(repository, term)
click to toggle source
@param [Repository] repository @param [String] term @return [Array<SearchResult>]
# File lib/gitdocs/search.rb, line 34 def search_repository(repository, term) return [] if term.nil? || term.empty? results = [] repository.grep(term) do |file, context| result = results.find { |s| s.file == file } if result result.context += ' ... ' + context else results << SearchResult.new(file, context) end end results end