#461 ジャンル別タイトル一覧を出し隊 + しかしジャンルは <p> で囲み隊

見出しマーク TOPIC_CHAR を見え無くし隊の続き。

遂にやりましたでございますよ! 夢が叶いましたのですよ! ここの今現在のソースを見れば分かるんですが、要するに

いつぞやの日記のスッピン状態。タイトルが <h3> で、ジャンルと日時が <p> なのね。

になってくれたのです。このふつー過ぎる当たり前の状態に、やっとでなってくれたのでございますよー。ぉぉぉ・・。神代。

で、今のところはそのまんま autoreplace フィルタを使いつつ、昨日の erewhontag フィルタを以下の genre フィルタなるモノにでっち上げ。

class Filter
  H3TOPIC       = Regexp::compile(/<h3><a (.+?)>■<\/a>(.+?)<p class=\"genre\">(.+?)<\/p><\/h3>/)
  def genre(str, type)
    case type
    when :AFTER_TOPIC
      str.gsub!(H3TOPIC,"<h3><a \\1>\\2</a></h3>\n<p class=\"genre\">\\3</p>")
    end
  end
end

\n が入ると、\1, \2\\1, \\2 てなふうになる。とゆう法則を発見するのに数時間(ぅぉーぃ・・・)かかりつつ、以下の change フィルタもでっち上げてとゆうかパクらせて貰って、色々自分好みの記述になるようにしてみました。

class Filter
  def change(str, type)
    case type
    when :AFTER_ONEDAY
      str.gsub!(/<h3 class="date"><a (.+?)><\/h3>\n/, '')
      str.gsub!(/<div class="topic">/, '<div class="section">')
      str.gsub!(/<div class="topicbody">\n<p class="date">(.+?)<\/p>/, "<p class=\"date\">\\1</p>\n<div class=\"subsection\">")
      str.gsub!(/<p id="d(.+?)>/, '<p>')
    end
  end
end
  • 1 行目の gsub!: 日付を生成させなくする。
  • 2 行目の gsub!: classtopicsection に。
  • 3 行目の gsub!: classtopicbodysubsection にしつつ、日付表記の <p class="date">subsection の外(上)に出す。
  • 4 行目の gsub!: 段落に id が付いてたら消す。

4 行目の段落 id のやつは、ndiary.conf で設定して無いけど何故か出て来るので、本体の記述をコメントアウトしてたんです。そのコメントアウトを外してこっちで処理するようにしました。多分ウチが何かしら色々と変な事やってるからだと思われ・・。

結局、昨日の erewhontag フィルタが私を助けてくれました。やっぱあれは複線だったんだ・・・。あれいじってて、:AFTER_TOPIC とか :AFTER_ONEDAY とかの意味がやっとで分かったのです。:AFTER_TOPIC 使えばジャンルの記述を <p> に置換しちゃっても大丈夫だったんですな。

ほんでもって nDiary 本体の至る所にしてあったコメントアウトも、だいぶ外す事が出来ました。まだちょっと残ってるけど。

色々考えて行けば、最終的にジャンル別設定云々も autoreplace フィルタを使わずに作れるのかなあ。とか思いながらまたそこら辺を探る度に出るます。

この記事は nDiary 使用時の記事をそのまま持って来たものです。

Utilities

Genre

Archives