ページの作成や編集にはユーザ登録が必要です。
編集時の文法(編集フォーマット)を切り替えるプラグイン
- 投稿者: BJM(と)
- カテゴリ: 新規
- 優先度: 普通
- 状態: リリース済
- 日時: 2003年11月03日 07時02分27秒
内容
まず、PartEditとの統合を行いました。
- 3.5.2dev1でsageとともに実装されたようですが、こちらはsageは実装しておりません。
またページの先頭行に、コメントとして // editby EditingFormat という行を入れると、ページまたはパラグラフの編集時にお好みの編集フォーマットで編集できるようにするプラグインです。
さらに、 convertto EditingFormat2 を併せて書いてから保存すると、次回編集時以降はEditingFormat2で編集するようになります。
- これは、当然PartEdit時にはできません。
例
- 先頭行に以下を付加すると、YukiWikiの文法で編集したと解釈。また次回以降もそうと解釈される。
// editby YukiWikiFormat
- 先頭行に以下を付加すると、今回はYukiWikiの文法で編集するが次回以降はFSWikiの文法で編集すると解釈。
// editby YukiWikiFormat convertto FSWikiFormat
- このconverttoは保存時に行われ、同行は次回以降以下にように変更される。
// editby FSWikiFormat
このパッケージに入っている編集フォーマットは以下の通り。(plugin::editpage2::rule::*.pm)
- YukiWikiFormat : YukiWiki系のWikiの編集フォーマット。
- OutlineLikeFormat : Emacs OutlineModeもどきな編集フォーマット。
- FSWikiFormat : FSWikiの編集フォーマット。変換は何もしていない。ただ、converttoのときに特別扱いするのも気持ちが悪いので存在する。
なお、編集ページのタイトルに編集フォーマット名が(in EditingFormat) と出るようになってます。
また、あったら便利なので、Template/EditingFormat というファイルも同梱しました。データディレクトリ内に入れておくと、新規作成時のテンプレートとして選択することができるので、おそらく一般利用者にこのプラグインの存在を意識させずに文法が変わったように感じさせることができるでしょう。
本来は core::editpage への変更なのでしょうが、あまりに変更範囲が大きいのでプラグインとして独立させました。
- 3.5.0のcore:editpage / partedit をもとに作成しておりますが、3.5.1で反映された ページ名にはブラケットネームを含められないようにする は反映させました。
フックやハンドラ等は、登録が名前順に行われることを利用して、あとから上書きしております。
- そのくせ、core<editpage2<partedit なので、parteditは切らないといけない中途半端な造りでご迷惑おかけします。
- xpageedit等と行った名前にすれば問題は起きないのですが、あとあとのために取っておこうかと。
〔注意〕この機能は、editpageおよびpartedit(にあたるもの)にのみ施してあるので、bbsやbss2には適用されません。これらや他のプラグインにもこのしくみが必要ならば、Wiki APIにこの変換のフレームワークが取り込まれる必要があると考えます。
対応バージョン
3.5.0以降。3.5.1で反映された ページ名にはブラケットネームを含められないようにする は反映済み。
インストール
zipファイルを解凍後、plugin以下はプラグインディレクトリに、data以下はデータディレクトリに入れてください。注意としては、現状ではparteditと動作が干渉するので、parteditプラグインは無効にしてください。
- parteditとcore::editpageが統合されている、3.5.2dev1ではこの問題が起きないと思います。
あとは、editpage2プラグインを有効にすれば、このプラグインは動作するはずです。
動作例
私が運用しているページにて、専用のFarmを掘ってみました。
- http://bjm-tms.hp.infoseek.co.jp/wiki.html?_wiki=editpage2sample (JavaScript有効の場合)
- JavaScriptが利用できない場合は、http://bjm-tms.hp.infoseek.co.jp/cgi-bin/FSWiki/wiki.cgi/editpage2sample をコピー&ペーストでお願いします。(iswebのリファラ制限のため)
編集フォーマットについて
- FSFormat2MyFormat: FreeStyleWikiFormat -> MyFormat の変換を行う関数。
- MyFormat2FSFormat: MyFormat -> FreeStyleWikiFormat の変換を行う関数。
以上の変換関数を持つPerlモジュール。オブジェクトを生成することも検討したが、あまり意味がないと思ったので普通のモジュールとしました。
課題
コメントの利用
- 何も出力しないパラグラフプラグインとして実装して、それが先頭に置かれていた場合は編集フォーマットを表すものとして解釈するのと等価ではあるが、何か気持ち悪いところがあったのでそういう実装をしなかった。しかし、コメントに制御の為の記述を埋め込むというのもそれはそれで汚い。
透過性
- 現状では編集形式のデータがページに記述されているため、普通に編集できてしまう。
- ただし、編集形式のデータを別のファイルにするとしても、一つのファイルに集中させるのは負荷等の観点から問題がある。
インターフェース
- 編集フォーマットの設定をフォームでできるようにしたい。
実装面
- &{"plugin::editpage2::rule::".$hoge."::FSFormat2MyFormat"}($contents)とやっているのは汚い?
コメント
- 別の書式への対応は以前から考えていました。動的に変える必要がなければ(Wiki全体で固定)、もっと簡単に実装できるんですけどね。やはりページごと(パラグラフごと?)に設定できるのがいいでしょうか。うまくFSWiki側の仕組みとして提供したいところですが…。 - たけぞう (2003年11月04日 15時04分09秒)
- 自分はFSWikiの書式で慣れているからそれで書きたいけど、他の人は別のWikiの書き方で慣れているとかそういう状況での運用を前提にして作成しました。だから、動的に変えられるようにするのは要件だったりします。 - BJM(と) (2003年11月04日 16時02分54秒)
- その場合、各自の編集したい範囲でとなるとパラグラフ単位になるわけで、結構Wikiテキストが混乱してきませんかね? - 染川 (2003年11月04日 16時59分26秒)
- このプラグインって保存されているテキストはFSWiki形式で、編集・保存時に任意の書式、FSWiki書式に変換を行うようなものなんですよね(違うのかな…)。例えばユーザごとに(もしくは未ログインでもクッキーで)デフォルトの書式を設定するようにすればスマートな形にならないでしょうか。 - たけぞう (2003年11月04日 19時35分11秒)
- 保存されているテキストはFSWiki形式で、編集・保存時に任意の書式、FSWiki書式に変換を行う : その通りです。もし、そうせずに任意書式を下の方まで持ってきてしまうと、他のプラグインだけでなく、KeywordやInterWikiNameなどにまで波及してきて、あまりに大がかりな変更となってしまうもので。現実この辺りの処理は何か単一の書式で行い、必要なときだけ任意書式に変換をした方がいいのではないかと。 - BJM(と) (2003年11月05日 03時06分15秒)
- あと。別々の文法で同じページを編集したい人間がいた場合。convertto指示子を乱発しないといけなくて、しかも部分編集はできない(そもそも指示子を入れられない)とスマートではありませんね。ここは、―ロード→ドロップダウンリストで文法を選択―変換→編集(by 任意書式)→[保存]ボタン―FSWiki形式への変換→保存 というふうにするのがスマートでしょうか。 - BJM(と) (2003年11月05日 03時21分25秒)
- このプラグインそのままではありませんが、FSWikiの標準ディストリビューションでサポートしましたので「リリース済」にしておきます。 - たけぞう (2004年05月24日 10時16分22秒)
最終更新時間:2004年05月24日 10時16分30秒