Update the Wiki.search function to make the results counts 'additive'.
i.e. so if we have a file named 'foo' that also contains the word 'foo' is should report 2 matches, not 1.
This commit is contained in:
+10
-12
@@ -468,25 +468,23 @@ module Gollum
|
|||||||
args = [{}, '-i', '-c', query, @ref, '--']
|
args = [{}, '-i', '-c', query, @ref, '--']
|
||||||
args << '--' << @page_file_dir if @page_file_dir
|
args << '--' << @page_file_dir if @page_file_dir
|
||||||
|
|
||||||
results = @repo.git.grep(*args).split("\n").map! do |line|
|
results = {}
|
||||||
|
|
||||||
|
@repo.git.grep(*args).split("\n").each do |line|
|
||||||
result = line.split(':')
|
result = line.split(':')
|
||||||
file_name = result[1].gsub( ::File.extname(result[1]), '' )
|
file_name = result[1].gsub( ::File.extname(result[1]), '' )
|
||||||
|
results[file_name] = result[2].to_i
|
||||||
{
|
|
||||||
:count => result[2].to_i,
|
|
||||||
:name => file_name
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Use git ls-files '*query*' to search for file names. Grep only searches file content.
|
# Use git ls-files '*query*' to search for file names. Grep only searches file content.
|
||||||
results += @repo.git.ls_files({}, "*#{ query }*").split("\n").map! do |line|
|
@repo.git.ls_files({}, "*#{ query }*").split("\n").each do |line|
|
||||||
{
|
file_name = line.gsub( ::File.extname(line), '' )
|
||||||
:count => 1,
|
results[file_name] += 1;
|
||||||
:name => line
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
results
|
results.map do |key,val|
|
||||||
|
{ :count => val, :name => key }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Public: All of the versions that have touched the Page.
|
# Public: All of the versions that have touched the Page.
|
||||||
|
|||||||
@@ -437,6 +437,13 @@ context "page_file_dir option" do
|
|||||||
assert_equal "docs/foo", results[0][:name]
|
assert_equal "docs/foo", results[0][:name]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "search results should make the content/filename search additive" do
|
||||||
|
# This file contains the word 'foo' and is called 'foo', so it should
|
||||||
|
# have a count of 2, not 1...
|
||||||
|
results = @wiki.search("foo")
|
||||||
|
assert_equal 2, results[0][:count]
|
||||||
|
end
|
||||||
|
|
||||||
teardown do
|
teardown do
|
||||||
FileUtils.rm_r(@path)
|
FileUtils.rm_r(@path)
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user