#ref(): File not found: "patch-CPre_itam.2003-09-05.patch" at page "PukiWiki/1.4/ちょっと便利に/インライン要素が展開される整形済みテキスト行"
PukiWikiにおいて,行頭に空白を置いたテキストは整形済みテキストと 呼ばれ,その名のとおり整形済みとして扱われます.このため, 基本的には整形済みテキストとして扱ってほしいが,インライン要素を 指定した場合にはそれを展開してほしいという使い方ができません.
たとえば,ターミナルの上での作業の説明の段落・ コマンドプロンプト上での作業の説明の段落などを記載したい場合, 画面に表示される文字列・プロンプト・入力文字列などは 色分けして表示したいことがありますが,その他の装飾は通常無く, より画面に近い表示をするために整形済みテキストとして 扱ってほしいというような場合があります.
基本は整形済みテキストの拡張ですが,現在の整形済みテキストのように インライン要素が必ず展開されない場合も必要だと考え, 整形済みテキストの代替手段として実装するように作成しました.
インライン要素が展開されるという拡張をした整形済みテキストですが, 視覚的な装飾を目的としているため,autolinkの指定がしてある場合に 自動的にリンクが張られることによって意図しない視覚効果が 発生しないように,一時的にautolinkの指定をしないようにしてあります.
行頭がシャープ半角空白(# )で始まる行はインライン要素が展開される 整形済みテキストとなります.行の自動折り返しは行なわれません.
Preクラスと同様のCPreクラスを作成しました. 命名はColorPreからの連想です. 違うところは行頭の'# 'を見つけた場合#を削除するようにしたことと, wrapメソッドを呼ぶ前にmake_link関数を呼ぶようにしたことです.
さらにBodyクラスを修正しました. BodyクラスではCPreクラスを$classes配列に追加, Preクラスのオブジェクト生成に並列に CPreクラスのオブジェクト生成が行われるように修正してあります.
ページ全体ではautolinkが有効でもCPreクラスで呼び出した make_link関数中ではautolinkが無効になるように, Link_autolinkクラス中のtoStringメソッド中で$autolinkが偽で あればリンクを展開しないように修正しました.