KG Software Library

複数行対応(拡張)プラグイン

Page :: FSWiki / Plugins / blockplugin

このエントリーをはてなブックマークに追加


β版公開中

2006/10/17 - FSWiki3.6.3 以降へ対応した複数行対応プラグイン

FSWiki3.6.3以降からWiki::Parserの内部仕様が大きく変更される為、その挙動に現行の「複数行対応プラグイン」が対応できていません。

その為、FSWiki 3.6.3 正式版公開までの間、β版として対応したものを公開します。動作確認は行っていますが、対応し切れていない場合もあるかもしれませんので、エラーなどありましたらご報告お願いします。

なお、このβ版は現時点(添付ファイルの更新日時を参考にしてください)におけるFSWikiのCVS最新版でのみ動作します。FSWiki 3.6.2以前のものでは正常に動作しませんのでご了承ください。

(追記)2006/12/18

本日以降のものより「複数行対応されたFSWiki」を対象としていますので、このベータ版の拡張箇所が随分と減っています。以下のようなプラグインでは、複数行拡張プラグインが必要なくなります。

  • Wiki::process_outline() を使用しないプラグイン
  • プラグイン内部で $self->{parser} を使用しないプラグイン
(追記)2007/01/10

従来の複数行対応プラグインを利用されている方はできるだけ機能縮小版の当プラグインを適用しておいてください。

(追記)2007/10/08

すいません、およそ10ヶ月ぶりの更新です。中身は 2007/01/13 に更新した BlockEx.pm です。アップするの忘れてました。もう直ぐ正式リリースですね。

β版は予告なく更新されます。

内容

FSWiki4.0で実装予定の複数行プラグインへの対応をFSWiki3.5.7で実現します。

  • 添付ファイルの中には、プラグイン本体と複数行プラグインのサンプルを含みます。

インストール

添付ファイルを解凍し、各ディレクトリに展開してください。また、プラグイン設定画面で _ex_block を有効にしてください。

以下のサイトからパッチをダウンロードして各所に適用してください。

また、サンプルとして blocksample プラグインを同封しています。

複数行プラグインの作成について...

プラグインの種別としてインライン、パラグラフと同様の WIKI形式、HTML形式をサポートしています。

WIKI形式の場合は、処理後のWikiソースがさらにparserによって処理されます。したがって、WIKI形式の場合のみ入子になった複数行プラグインに対応できます。

HTML形式で入子の複数行プラグインへ対応する場合は、プラグイン内部でparserを使用して処理する必要があります。この辺りの使用は、インライン、パラグラフと同様です。

複数行プラグインとして blocksample プラグインを同封していますので参考にしてください。

  複数行プラグインの登録方法

Install.pm に以下のように add_block_plugin を使用して登録します。

add_block_plugin(プラグイン名,モジュール名,種別)

  複数行プラグイン・モジュール

登録した複数行プラグインのモジュールに以下の関数を追加します。

sub block {
    my $self   = shift;
    my $wiki   = shift;
    my $source = shift;
    my $args1  = shift;
    my $args2  = shift;
      :
    my $buf = "";
      :
    return $buf;
}
  • $source は複数行の内部のWikiソースが渡されます。
  • $argsX はパラメータです。

サンプル

このサイトでは複数行プラグインとして 開発中の Codeプラグイン を導入しています。このプラグインを利用すれば、ソース内のテキストをプラグインで整形して出力できるようになっています。

例えば、以下のような例を用いて・・・Java形式のコード整形を行います。

  • ちなみに、下記の出力は Textフォーマット を利用して出力しています。
1
2
3
{{code Java,4,true
〜 Java ソース 〜
}}

出力結果は以下のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package sample.logging;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Logging.global を利用したサンプルプログラム
 */
public class LoggingGlobal {
    public static void main(String[] args) {
        Logger.global.fine("start!");
        try {
            throw new Exception("Sample Program Error!!!");
        } catch (Exception e){
            Logger.global.log(Level.SEVERE,"Fatal error generating!",e);
        }
        Logger.global.fine("done!");
    }
}

こんな感じのプラグインが簡単に作れるようになります。

ここで使用している Code プラグインは整形部の処理モジュールを追加すれば、いろんなコードフォーマットに対応できるように設計しています。現在は、まだコード整形モジュールの準備中で Text, Java, Perl, FSWiki 等のコード整形モジュールを用意する予定です。

ライセンス

GPLでお願いします。

更新履歴

2005/04/28
  • 新規作成
Comment(4)
  • 動作がおかしかったので修正しました。もうしばらくしたら、FSWiki本家サイトに修正版をアップします。 - KG (2005/05/03-00:27:41)
  • ご無沙汰しております。3.6.3dev2で複数行プラグインを使用したいのですが、「Software Error: Not an ARRAY reference at lib/Wiki.pm line 667.」というエラーが出て解決できずにいます。自力で解決できるものなら解決したいのですが、いまいち動作を掴みきれません。お力添えを頂けませんでしょうか?ちなみにプラグイン設定画面で_ex_blockにチェックを入れるだけで全てのページ(複数行プラグインを使用していないページを含む)編集でこのエラーが出ます。3.6.3dev2では標準で複数行プラグインに対応されてますが、複数行プラグイン内でprocess_outlineを使う場合は従来どおり_ex_blockが必要ってことですよね?もちろん、_ex_blockにはこのページに添付されている_ex_block_bata.zip(501)を利用させてもらっているのですが…。 - あき (2007/10/08-12:18:15)
  • 随分前に手元のは更新してたんですが、アップしてませんでした。β版を更新していますので新しいのを試してください。 - KG (2007/10/08-13:08:06)
  • ありがとうございます。動いたようです。 - あき (2007/10/08-14:48:22)
お名前: コメント:

最終更新時間:2007/10/08-13:06:57