=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!(/