diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-03-10 13:32:04 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-03-10 13:32:04 +0000 |
commit | 8b98ceb92c8fba72315d28c3b7664f481547bf24 (patch) | |
tree | 8d64bdfea3a8d89f2193f983c0d00248058b407b /app/helpers/projects_helper.rb | |
parent | 7a20a4d32b718f803aa4e3af286ab6a2275b8b6f (diff) | |
download | redmine-8b98ceb92c8fba72315d28c3b7664f481547bf24.tar.gz redmine-8b98ceb92c8fba72315d28c3b7664f481547bf24.zip |
improved search engine
* it's now possible to search for multiple words ("all words" or "one of the words" options)
* added a fixed limit for result count
git-svn-id: http://redmine.rubyforge.org/svn/trunk@321 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/helpers/projects_helper.rb')
-rw-r--r-- | app/helpers/projects_helper.rb | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index a6c033d0f..694dd9124 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -16,8 +16,14 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
module ProjectsHelper
- def result_overview(text, token)
- match = excerpt(text, token)
- match ? highlight(match, token) : truncate(text, 150)
+
+ def highlight_tokens(text, tokens)
+ return text unless tokens && !tokens.empty?
+ regexp = Regexp.new "(#{tokens.join('|')})", Regexp::IGNORECASE
+ result = ''
+ text.split(regexp).each_with_index do |words, i|
+ result << (i.even? ? (words.length > 100 ? "#{words[0..44]} ... #{words[-45..-1]}" : words) : content_tag('span', words, :class => 'highlight'))
+ end
+ result
end end |