=begin filter/onlybook.rb 書籍情報(つまり、(ISBN...))のみを抜き出した本日記の生成 節内で書籍情報が先に並べ替え、日記本文は300字程度に省略 日付やトピックのリンクは話題にした真日記該当部へ連結 ※尚、BOOKSTOREはbookstore.rbのものに少々手を加えています  (bk1の書誌情報からISBNをコピペしても動くように) =end class Filter BOOKSTORE = Regexp::compile(/[\((]ISBN[:|:]?\s?(\d-[\d-]{9}[-]?[\w]?)[\))]/) CHECKMARK = '' def onlybook(str, type) case type when :UL, :DL, :P #書籍データ(BOOKSTORE)位置変更、「マーク」記入、文章短縮 if str =~ BOOKSTORE books = [] str.gsub!(BOOKSTORE){ books << $& '' } tmpstr = str.gsub(/\s+/,' ').split(//) if tmpstr.size > 300 newstr = tmpstr[0..300].join + '……' else newstr = tmpstr.join end str.sub!(/^.*$/mi, CHECKMARK + books.join + newstr + '

') end when :AFTER_HEREDOC, :AFTER_CODE, :AFTER_BLOCKQUOTE, :AFTER_QUOTE, :AFTER_UL, :AFTER_DL, :AFTER_P #「マーク」を含まなければ除去 if str !~ /#{CHECKMARK}/ str.sub!(/^.*$/mi,'') end when :AFTER_ONEDAY #「マーク」を含まなければ除去 str.sub!(/^.*$/,'') if str !~ /#{CHECKMARK}/ str.gsub!(/
.*?<\/h5>.*?
(.*?)<\/div>/mi) { newstr, chkstr = $&, $1 newstr = '' if chkstr !~ /#{CHECKMARK}/ newstr } #その他余白除去 str.gsub!(/
(.*?)<\/div>/mi) { newstr, chkstr = $&, $1 newstr = '' if chkstr.strip == '' newstr } str.gsub!(/
(.*?)<\/div>/mi) { newstr, chkstr = $&, $1 newstr = '' if chkstr.strip == '' newstr } #「マーク」除去 str.gsub!(/#{CHECKMARK}/,"") #日付、トピック等のリンクの日記ファイルへの変更 #私の場合、生成したファイルはbook/b_200106.htmlで、日記は./s_d200106.html #なのでこうしている。適時改変 #本当はdate2...関数の上書きで対応したい所 str.gsub!(/b_(.*?)\.html/){ t = '../s_d' + $1 + '.html' } end end end