[Fswiki-dev] HTMLParser.pmへの機能追加

Back to archive index

Satoru Kitaguti kitag****@mail*****
2005年 5月 11日 (水) 17:36:43 JST


北口です。

HTMLParser.pm にいくつかの機能追加を行いましたので、ソースとサンプルを
Bugtrack-wiki/241 として投稿しておきました。

  http://fswiki.poi.jp/wiki.cgi?page=BugTrack%2Dwiki%2F241

fswiki-3.5.7のlib/Wiki/HTMLParser.pmを置き換え、同梱の表示サンプルを見
てください。
Fswikiのプラグイン機構など正しく理解していませんし、私の使用していない
機能のテストはしていないため、一部機能は正しく動かないかもしれません。
コアチームの支援を期待します。

[変更点]
1.継続行
  行末に\が置かれた行を継続行として扱い、次行と' 'で連結します。
  この処理は最も最初に行われるので、プラグイン記述中に使用してもプラグ
  インに改行が渡される心配はありません。
  ただし、CSVテーブル書式では継続行機能は使用できません。

2.CSVテーブル書式でのセル内改行
  ,で始まるCSVテーブル書式では、セル内に"や,を記述したり、改行を含める
  ことができます。
  表1行中に現れることのできる改行の数は、最大$csvJoinMax個(最大3個)以
  内でなければなりません。これは、CSV形式では"の数を1個間違えるだけで
  文末までセルに含まれてしまうための、救済策です。

3.強制改行
  $br_mode=0(デフォルト)では改行は無視されますが、行末に<BR>を置いた場
  合のみ改行できるようにしました。

4.エスケープ文字
  Wiki構文中で特殊文字と認識される文字を\でエスケープすることができま
  す。入力が面倒なtabは\tと、改行は\nと記述できます。\自身は\\と記述し
  てください。
  {{plugin}}の説明を書く場合などは、\{\{plugin\}\}と書きます。

  エスケープ文字処理はプラグイン内でも考慮しなければならないため、この
  修正だけでは不十分です。

5.下線や強調などの文字修飾要素
  下線や強調などが、行を跨いだりネストできるようになりました。
  取消線はHTMLの<DEL>要素を生成していますが、<DEL>は削除された要素を意
  味するので表示しないブラウザもあるでしょう。代りに
  <span style="text-decoration: line-through">を生成してみましたが、携
  帯などでは正しく表示できるでしょうか?

6.プラグイン
  {{plugin}}は、{{plugin {{plugin}} }} のようにネストできません。
  pluginの引数は、UNIX shell likeな書式が使えますので、
  {{plugin file="My Documents\\picture.jpg",option}} のように記述する
  ことができます。
  (perlに標準的に含まれるText::ParseWordsを使用しています。)

  パラグラフプラグインとインラインプラグインの違いを考えて見ると、Wiki
  形式プラグインではその処理に違いがあるものの、HTMLプラグインでは違い
  が見当たりません。また、Wiki書式中での出現場所を限定する理由はなさそ
  うなので、行頭,行中のどこに出現しても処理されるようにしました。

7.おまけ機能
  以下は、HTMLparserのようなコアではなく、複数行プラグインとして再実装
  すべきでしょう。

7-1.整形済テキスト追加書式
  "空白"で開始する整形済テキストは、途中で空行が入ったりすると、とても
  見にくいので、">"で始まる行を整形済テキストに定義してみました。
  HTMLParser.pmの改良により、こうした拡張書式の導入が簡単になっています。

7-2.拡張テーブル書式
  セル連結や文字修飾の可能な拡張テーブル書式を追加してみました。

7-3.複数行プラグイン書式
  この複数行プラグイン部分は全くテストしていません。

  %%で開始する行はマルチラインプラグインです。
  現状は同名のパラグラフプラグインを呼び出します。
%% {{plugin option,option...}}
%% プラグインには
%% この複数行の配列がリファレンスとして渡されます。
---
** 北口  悟 <kitag****@mail*****>                **



Fswiki-dev メーリングリストの案内
Back to archive index