# -*- coding: utf-8 -*- # # @file # @brief # @author ongaeshi # @date 2011/07/11 require 'milkode/cdweb/lib/coderay_wrapper' require 'milkode/cdweb/lib/database' require 'milkode/cdweb/lib/mkurl' require 'milkode/cdweb/lib/search_contents' require 'milkode/cdweb/lib/search_files' require 'milkode/cdweb/lib/search_fuzzy_gotoline' require 'milkode/cdweb/lib/search_gotoline' require 'milkode/common/util' require 'milkode/grep/findgrep' module Milkode def view(record, params, before) @setting = WebSetting.new @title = record.shortpath @path = record.shortpath is_sensitive = params[:sensitive] == 'on' q = params[:query] && Query.new(params[:query]) if (Util.larger_than_oneline(record.content) && q && !q.keywords.empty?) if Util.gotoline_keyword?(q.keywords[0]) gotolines = Util.parse_gotoline(q.keywords) match_lines = [] gotolines.each do |v| if v[0][0][1..-1] == record.shortpath match_lines << Grep::MatchLineResult.new(v[1] - 1, nil) end end # TestCdwebApp#t_view_gotoline @record_content = CodeRayWrapper.new(record.content, record.shortpath, match_lines, q.keywords).to_html else grep = Grep.new(record.content) match_lines = grep.match_lines_and(q.keywords, is_sensitive, q.wide_match_range) if match_lines.empty? && q.wide_match_range_empty? # Expand search range match_lines = grep.match_lines_and(q.keywords, is_sensitive, 7) end # TestCdwebApp#t_view_with_query @record_content = CodeRayWrapper.new(record.content, record.shortpath, match_lines, q.keywords).to_html end else # TestCdwebApp#t_view_simple @record_content = CodeRayWrapper.new(record.content, record.shortpath).to_html end Database.instance.touch_viewtime(@path) @elapsed = Time.now - before haml :view end def search(path, params, before, suburl, locale) @setting = WebSetting.new @path = path query = Query.new(params[:query]) @title = "'#{query.query_string}' in #{path_title(path)}" if (query.gotolines.size > 0) searcher = SearchFuzzyGotoLine.new(path, params, query, suburl) if searcher.directjump? redirect searcher.directjump_url end elsif (query.keywords.size > 0) if Util.gotoline_keyword?(query.keywords[0]) searcher = SearchGotoLine.new(path, params, query, suburl) else searcher = SearchContents.new(path, params, query, suburl, locale) if searcher.directjump? redirect searcher.directjump_url end end else searcher = SearchFiles.new(path, params, query, suburl) end @total_records = searcher.total_records @range = searcher.data_range @record_content = "