Show page source of Guide/BlockProcessor #41203

{{{ html
<div style="border:1px solid red;background-color:#FFFFE0;font-size:100%;padding:10px;">
この文書は内容が古い可能性があります。この文書の最新版は <a href="http://sourceforge.jp/projects/docs/wiki/WikiBlockProcessor">docs:WikiBlockProcessor</a> にあります。
</div><br>
}}}

= ブロックプロセッサ =

以下の様な文法で、あるブロックを Wiki とは別の方式でフォーマットさせることが出来ます。

{{{
 {{{ プロセッサ名 引数1 引数2
 渡す
 ブロック
 の
 内容
 }}}
}}}

[[PageOutline(start=2, depth=2)]]

== 自動判別 (auto) ==

 * 引数: なし

プロセッサ名を省略した場合は自動的にこのプロセッサで判別されます。
といっても、今のところ2種類しかありません。

 * ブロックの先頭が #! に続く、既知の shebang 行の場合は code へ
 * それ以外は全て pre へ

意図的にこのプロセッサに渡す場合(ないと思いますが)は auto と書けば可能です。

== pre ==

 * 引数: なし

プレフォーマットテキストを出力します。

{{{
 {{{ pre
 書いた物はそのまま
 出力されます。
 < > 等は HTML エスケープされます。
 }}}
}}}

{{{ pre
書いた物はそのまま
出力されます。
< > 等は HTML エスケープされます。
}}}

== comment ==

 * 引数: なし

{{{
 {{{ comment
 コメントブロック。
 編集画面でしか見えません。編集時の注意等を書く場合に使えます。
 }}}
}}}

{{{ comment
コメントブロック。
編集画面でしか見えません。編集時の注意等を書く場合に使えます。
}}}

== code ==

 * 引数: 言語名

ソースコードをハイライトします。

今のところ、enscript の言語名がそのまま使えます。
(サポートされている言語名: 
ada, asm, awk, bash, c, changelog, cpp, csh, delphi, diff, diffs,
diffu, dylan, eiffel, elisp, erlang, forth, fortran, fortran_pp,
haskell, html, icon, idl, inf, java, javascript, ksh, lua, m4, mail,
makefile, matlab, nroff, oberon2, objc, outline, oz, pascal, perl,
postscript, pyrex, python, rfc, ruby, scheme, sh, skill, Smalltalk,
sml, sql, states, synopsys, tcl, tcsh, tex, vba, verilog, vhdl, vrml,
wmlscript, zsh
)


{{{
 {{{ code ruby
 def initialize
   @compiler = ERuby::Compiler.new
 end

 def check_request(r)
   if r.method_number == M_OPTIONS
     r.allowed |= (1 << M_GET)
     r.allowed |= (1 << M_POST)
     return DECLINED
   end
 end
 }}}
}}}

{{{ code  ruby
def initialize
  @compiler = ERuby::Compiler.new
end

def check_request(r)
  if r.method_number == M_OPTIONS
    r.allowed |= (1 << M_GET)
    r.allowed |= (1 << M_POST)
    return DECLINED
  end
end
}}}

== html ==

'''このブロックプロセッサの使用は最低限にすることをお勧めします。'''

ある程度自由に HTML を書くことが出来ます。
複雑な表を書くなど、標準のWikiフォーマットでは表現力が足らない場合に
使用することが出来ます。

script, style 要素と onClick などのイベント関係の属性等は
フィルタされ、出力されません。
また、タグの対応関係が取れていなくてもそのまま出力するため、
表示を崩さないように注意する必要があります。

例: 

{{{
 {{{ html
 <span style="color: #000081; background: #D0FFE8; border: 1px solid #4B78EE;">
    style属性が使えるようになりました。</span>
 <font color="#810000">もちろんfont要素も使えます。</font>
 <table width="50%" border="1">
  <tr><th colspan="2">colspanが使いたい</th></tr>
  <tr>
   <td aling="center" width="50%">こういう表は</td>
   <td align="right" bgcolor="yellow">HTMLでしか</td>
 </tr>
 </table>
 }}}
}}}

表示:

{{{ html
 <span style="color: #000081; background: #D0FFE8; border: 1px solid #4B78EE;">
    style属性が使えるようになりました。</span>
 <font color="#810000">もちろんfont要素も使えます。</font>
 <table width="50%" border="1">
  <tr><th colspan="2">colspanが使いたい</th></tr>
  <tr>
   <td aling="center" width="50%">こういう表は</td>
   <td align="right" bgcolor="yellow">HTMLでしか</td>
 </tr>
 </table>
}}}

== template

記入可能なテンプレートを表示し、ユーザによって記入された内容を埋め込んだ形で追記します。
!LineComment と同じく、'''この入力ボックスへは権限設定を無視して誰でも書き込めます'''。

/%![0-9]*(x![0-9]+)?![imcutdz]/ がフォーマット文字列です。それぞれ以下の意味になります。

  * %i - 1行入力ボックス (%20i の様にするとサイズが指定できます)
  * %m - 複数行入力ボックス (%20x3m の様にするとサイズが指定できます)
  * %c - チェックボックス (チェック時は yes に置換)
  * %u - ユーザ名
  * %d - 日付
  * %t - 時間
  * %z - タイムゾーン

例:
{{{
 {{{ template
 ||名前|| %u (%d %t %z)||
 ||タイトル|| %60i||
 ||詳細|| %60x3m||
 || || ||
 }}}
}}}

表示:
{{{ template
||名前|| %u (%d %t %z)||
||タイトル|| %60i||
||詳細|| %60x3m||
|| || ||
}}}
||名前|| doi (2009-05-25 18:08:33 JST)||
||タイトル|| test||
||詳細|| test||
|| || ||
||名前|| anonymous (2009-03-03 23:49:28 JST)||
||タイトル|| ||
||詳細|| ||
|| || ||
||名前|| [id:sugi sugi] (2008-02-05 01:36:12 JST)||
||タイトル|| こんな感じで||
||詳細|| もう少し改善が必要かもしれませんが、[[BR]]アンケートフォームや要望リストなどに使ってみてください。[[BR]]||
|| || ||

== !GoogleAdsense

[Guide/AffiliateSetting 広告の設定]を参照してください。