# -*- coding: utf-8 -*- # category_similar.rb: # * shows similar posts under the diary # * depends on plugin/category.rb # You can redistribute it and/or modify it under the same license as tDiary. def category_similar(categories, max_item) info = Category::Info.new(@cgi, @years, @conf) months = [['01', '02', '03'], ['04', '05', '06'], ['07', '08', '09'], ['10', '11', '12']][@date.strftime("%m").to_i / (3 + 1)] # quarter years = { @date.strftime("%Y") => months } hash = @category_cache.categorize(info.category, years) items = [] hash.values_at(*categories).inject({}){|r, i| r.merge i if !r.nil? and !i.nil? }.to_a.each do |ymd_ary| ymd = ymd_ary[0] ary = ymd_ary[1] next if ymd == @date.strftime('%Y%m%d') t = Time.local(ymd[0,4], ymd[4,2], ymd[6,2]).strftime(@conf.date_format) ary.each do |idx, title, excerpt| items << %Q|#{t}#p#{'%02d' % idx} #{apply_plugin(title)}| end end unless items.empty? '
' + "

#{category_similar_label}

" + "" + "
" end end add_conf_proc('category_similar', category_similar_label, 'basic') do if @mode == 'saveconf' @conf["category_similar.excludes"] = @cgi.params["category_similar.excludes"][0] @conf["category_similar.section_amounts"] = @cgi.params["category_similar.section_amounts"][0].to_i end <<-HTML

#{category_similar_label}

#{category_similar_excludes}

#{category_similar_amounts}

HTML end add_body_leave_proc do |date, idx| diary = @diaries[date.strftime('%Y%m%d')] if @mode =~ /day/ and diary.categorizable? categories = [] diary.each_section do |s| categories += s.categories unless s.categories.empty? end categories.delete_if do |i| @conf['category_similar.excludes'].split(/\r?\n/).include? i end category_similar(categories, @conf['category_similar.section_amounts']) end end # Local Variables: # mode: ruby # indent-tabs-mode: t # tab-width: 3 # ruby-indent-level: 3 # End: # vim: ts=3