Create  Edit  Diff  FrontPage  Index  Search  Changes  History  Source  RSS  Login

emptDiaryスタイル

emptDiaryスタイルとは

emptDiaryは「empty line permitted tDiary style」を省略したものです。長いねぇ。 tDiaryスタイルに加えて、プラグインの引数に空白行を許すスタイルです。 このスタイルを使うと、日記をセクションに分ける際に、 <%と%>の間の空白行を無視してもらえます。

日記にプログラムリストなどを書く場合に、リストが空白行を含むと、 tDiaryスタイルではリストの途中から次のセクションになってしまいます。 emptDiaryスタイルでは、プラグインの引数の中の空白を無視するので、 例えばpreタグを挿入するプラグインのヒアドキュメントとして プログラムリストを記述することで、 プログラムリストに何の変更もなく、日記にリストを書くことができます。

下記のようなプラグインを使えば、preタグを挿入できるでしょう。

def pre (text, escape = true, attr='')
  attr = ' ' + attr unless attr.empty?
  "<pre#{attr}>#{escape ? CGI::escapeHTML(text) : text}</pre>"
end

使い方

emptdiary_style.rbファイルを、tdiary/ディレクトリにコピーしてください。 tdiary/ディレクトリは、tdiary.rbファイルのあるトップディレクトリの下にあります。 そして、tdiary.confに以下の行を書いてください。

 @style = 'emptDiary'

emptDiaryスタイルの文法

日記は、tDiaryスタイルとほとんど同じように書くことができます。 tDiaryスタイルに書かれている通り、

  • 空白無しで始まる行は、セクションタイトルになります。この行には、セクションアンカーが付きます。
  • セクションタイトルに続く行は、そのセクションの内容になります。
  • 空白行によって、次のセクションと分かれます。
  • セクションの最初の行を空白や<で始めることによって、セクションタイトルの無いセクションを作ることができます。

しかし、tDiaryスタイルと違って、『行の最初が「<」で始まる段落がある場合、そのセクションは全体が整形の対象にならなくなります。』というルールがより厳しく適用されます。tDiaryスタイルでは、その段落のどれか1行が「<」で始まる場合には、その段落が整形の対象にならなくなるのに対して、emptDiaryスタイルでは、その段落の最初の1行が「<」で始まる場合に限って、その段落が整形の対象にならなくなります。

emptDiaryスタイルでは、上記のルールに加えて、

  • <%と%>に囲まれた空白行は、セクションを分割する際に無視されます。つまり、あるセクションに、<%と%>に囲まれた空白行を含めることができます。
  • 副作用として、日記には、<%と%>が同数、それぞれペアになって含まれていないといけません。

つまり、pre.rbを使って、

 セクションタイトル
 <p>セクションの内容</p>
 <%=pre <<'_PRE'
 #include <stdio.h>

 /* 上記は空白行 */
 int
 main (int argc, char *argv[])
 {
   puts ("Hello world.");
 }
 _PRE
 %>

などというセクションを作ることができます。 不等号やアンパーサンドの実体参照への変換は、 pre.rbで行われることに注意してください。

謝辞

このスタイルは、tDiaryスタイルのTdiarySectionとTdiaryDiaryを super classとして実装されています。 このようなフレキシブルなクラスを提供されている、 tdiary_style.rbの著者の方々に感謝します。

スタイルとこの文書の著作権

この文書をよりわかりやすくするために、みなさんの編集をお願いいたします。

Copyright 2003 zunda <zunda at freeshell.org>

Permission is granted for use, copying, modification, distribution, and distribution of modified versions of this work under the terms of GPL version 2 or later.

Last modified:2004/08/12 02:22:48
Keyword(s):
References: