GITSCM: Tweaked git scm view layout
[gitredmine.git] / app / helpers / search_helper.rb
blobed2f40b69f1e79a7f6b64ab3542acd2099ed0429
1 # redMine - project management software
2 # Copyright (C) 2006-2007  Jean-Philippe Lang
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18 module SearchHelper
19   def highlight_tokens(text, tokens)
20     return text unless text && tokens && !tokens.empty?
21     regexp = Regexp.new "(#{tokens.join('|')})", Regexp::IGNORECASE    
22     result = ''
23     text.split(regexp).each_with_index do |words, i|
24       if result.length > 1200
25         # maximum length of the preview reached
26         result << '...'
27         break
28       end
29       if i.even?
30         result << h(words.length > 100 ? "#{words[0..44]} ... #{words[-45..-1]}" : words)
31       else
32         t = (tokens.index(words.downcase) || 0) % 4
33         result << content_tag('span', h(words), :class => "highlight token-#{t}")
34       end
35     end
36     result
37   end
38 end