Yoshio TAKAEDA / 高枝佳男
takae****@mri*****
2003年 10月 13日 (月) 18:33:11 JST
高枝です。 In article <20031****@lists*****>, kita****@kitaj***** (Junichiro Kita) さん wrote: >この部分は > >> formatter = HikiFormatter::new( tokens, @db, @plugin ) >> contents, toc = formatter.to_s, formatter.toc >> if $hilight_keys >> word = @params['key'][0] >> if word && word.size > 0 >> contents = hilighten(contents, word.unescape.split) >> end > >の方がいいかも. 御意。ということで、きたさんの本来のパッチは次のとおりという ことで。(ありがたく使わせていただきます。_o_) --- command.rb.orig Sun Aug 24 21:03:21 2003 +++ command.rb Mon Oct 13 18:22:26 2003 @@ -135,6 +135,12 @@ tokens = parser.parse( text ) formatter = HikiFormatter::new( tokens, @db, @plugin ) contents, toc = formatter.to_s, formatter.toc + if $hilight_keys + word = @params['key'][0] + if word && word.size > 0 + contents = hilighten(contents, word.unescape.split) + end + end @db.set_references( @p, formatter.references ) @db.increment_hitcount( @p ) @@ -159,6 +165,20 @@ generate_page( data ) end + + def hilighten(str, keywords) + hilighted = str.dup + keywords.each do |key| + re = Regexp.new('(' << Regexp.escape(key) << ')', Regexp::IGNORECASE) + hilighted.gsub!(/([^<]*)(<[^>]*>)?/) { + body, tag = $1, $2 + body.gsub(re) { + %Q[<em class="hilight">#{$1}</em>] + } << ( tag || "" ) + } + end + hilighted + end def cmd_index list =****@db*****_info.sort {|a, b| @@ -343,7 +363,11 @@ word = @params['key'][0] if word && word.size > 0 total, l =****@db*****(word) - l.collect! {|p| @plugin.hiki_anchor( p[0].escape, @plugin.page_name(p[0])) + " - #{p[1]}"} + if $hilight_keys + l.collect! {|p| @plugin.make_anchor("#{$cgi_name}?cmd=view&p=#{p[0].escape}&key=#{word.split.join('+').escape}", @plugin.page_name(p[0])) + " - #{p[1]}"} + else + l.collect! {|p| @plugin.hiki_anchor( p[0].escape, @plugin.page_name(p[0])) + " - #{p[1]}"} + end data = get_common_data( @db, @plugin ) @plugin.hiki_menu(data, @cmd)