TBL_DIR = File.join(File.dirname(__FILE__), '..', '..', 'config', 'table')
XS = File.join(TBL_DIR, 'phonetic_components.yml')
+MAX_NUM_FOR_MATCHED = 100
class HanmorphController < ApplicationController
layout "main"
end
end
def main_procedure_at_home
- process_unihan
- process_sbgy
- process_dianzhu
- process_daxu
+ if @char then
+ process_unihan
+ process_sbgy
+ process_dianzhu
+ process_daxu
+ end
if @extext then
begin
search_daxu
wordheads = DxWordhead.find_by_sql(["select * from dx_wordheads " +
"where exp like ?", @pattern])
searched = wordheads.size
- if searched > 50 then
+ if searched > MAX_NUM_FOR_MATCHED then
raise TooManyCandidatesError, "#{searched}件、見付かりました。検索条件を絞り込んでください。"
end
wordheads.each do |word|
# num = $3.to_i
appendix = (volume == "8" ? true : false)
return [page, appendix, volume]
- end
+ end
end
def get_voltitle(vol)
return vol.title.sub(/說文解字第/u, "")
end
def hilighted_exp(exp, pattern)
-# span = "<span style='background-color:peachpuff;'>%s</span>"
- span = "<span style='background-color:lightpink;'>%s</span>"
- replaced = sprintf(span, pattern)
- return exp.sub(/#{pattern}/u, replaced)
+ regex = pattern.gsub(/%/, ".+")
+ # BUG: マッチした文字列が異なる場合、最初のものに置換される
+ if exp =~ /#{regex}/u then
+ span = "<span style='background-color:lightpink;'>#{$&}</span>"
+ return exp.gsub(/#{regex}/u, span)
+ else
+ return exp
+ end
+
end
end