! 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.