このWikiは、OSDNの管理グループが運営しています。

今月のプロジェクト

OSDNを利用している開発者の方に、月ごとにインタビューを行っています。

2009 年

2008 年

2007 年

Wikiガイド

最近の更新

2025-03-01
2025-02-22
2017-04-29
2015-12-25
2015-06-30
この文書は内容が古い可能性があります。この文書の最新版は docs:WikiBlockProcessor にあります。

ブロックプロセッサ

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

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

自動判別 (auto)

  • 引数: なし

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

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

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

pre

  • 引数: なし

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

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

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
 }}}
  1. def initialize
  2. @compiler = ERuby::Compiler.new
  3. end
  4. def check_request(r)
  5. if r.method_number == M_OPTIONS
  6. r.allowed |= (1 << M_GET)
  7. r.allowed |= (1 << M_POST)
  8. return DECLINED
  9. end
  10. 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>
 }}}

表示:

style属性が使えるようになりました。 もちろんfont要素も使えます。
colspanが使いたい
こういう表は HTMLでしか

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||
 || || ||
 }}}

表示:

名前 ( )
タイトル
詳細

名前 QlqzzNwr (2025-03-01 08:29:34 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 07:46:43 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 07:44:54 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 07:40:56 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 07:40:52 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 06:44:22 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 06:38:21 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 06:29:29 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 03:38:15 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 03:31:59 JST)
タイトル 1
詳細 555
名前 QlqzzNwr'" (2025-03-01 03:28:44 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 03:28:00 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 03:27:45 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 03:27:05 JST)
タイトル 1
詳細 555
名前 QlqzzNwr872Foi29')) OR 500=(SELECT 500 FROM PG_SLEEP(15))-- (2025-03-01 03:21:57 JST)
タイトル 1
詳細 555
名前 QlqzzNwrRLv1c3Id') OR 788=(SELECT 788 FROM PG_SLEEP(15))-- (2025-03-01 03:16:12 JST)
タイトル 1
詳細 555
名前 QlqzzNwr48NrvKwR' OR 773=(SELECT 773 FROM PG_SLEEP(15))-- (2025-03-01 03:12:00 JST)
タイトル 1
詳細 555
名前 QlqzzNwrt1aCnF83' OR 291=(SELECT 291 FROM PG_SLEEP(15))-- (2025-03-01 03:08:13 JST)
タイトル 1
詳細 555
名前 QlqzzNwr-1 waitfor delay '0:0:15' -- (2025-03-01 02:55:51 JST)
タイトル 1
詳細 555
名前 (select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/ (2025-03-01 02:53:16 JST)
タイトル 1
詳細 555
名前 (select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/ (2025-03-01 02:44:40 JST)
タイトル 1
詳細 555
名前 QlqzzNwr0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z (2025-03-01 02:41:54 JST)
タイトル 1
詳細 555
名前 QlqzzNwr0'XOR(if(now()=sysdate(),sleep(23.932),0))XOR'Z (2025-03-01 02:39:46 JST)
タイトル 1
詳細 555
名前 QlqzzNwr0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z (2025-03-01 02:33:53 JST)
タイトル 1
詳細 555
名前 QlqzzNwr0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z (2025-03-01 02:31:06 JST)
タイトル 1
詳細 555
名前 if(now()=sysdate(),sleep(0),0) (2025-03-01 02:28:58 JST)
タイトル 1
詳細 555
名前 if(now()=sysdate(),sleep(11.966),0) (2025-03-01 02:25:33 JST)
タイトル 1
詳細 555
名前 if(now()=sysdate(),sleep(15),0) (2025-03-01 02:23:12 JST)
タイトル 1
詳細 555
名前 -1" OR 3+752-752-1=0+0+0+1 -- (2025-03-01 02:19:14 JST)
タイトル 1
詳細 555
名前 -1" OR 2+752-752-1=0+0+0+1 -- (2025-03-01 02:19:12 JST)
タイトル 1
詳細 555
名前 -1' OR 3+891-891-1=0+0+0+1 or 'VxDV05QL'=' (2025-03-01 02:19:10 JST)
タイトル 1
詳細 555
名前 -1' OR 2+891-891-1=0+0+0+1 or 'VxDV05QL'=' (2025-03-01 02:19:07 JST)
タイトル 1
詳細 555
名前 -1' OR 2+891-891-1=0+0+0+1 or 'VxDV05QL'=' (2025-03-01 02:18:42 JST)
タイトル 1
詳細 555
名前 -1' OR 3+124-124-1=0+0+0+1 -- (2025-03-01 02:18:09 JST)
タイトル 1
詳細 555
名前 -1' OR 2+124-124-1=0+0+0+1 -- (2025-03-01 02:17:54 JST)
タイトル 1
詳細 555
名前 -1 OR 3+422-422-1=0+0+0+1 (2025-03-01 02:17:49 JST)
タイトル 1
詳細 555
名前 -1 OR 2+422-422-1=0+0+0+1 (2025-03-01 02:17:44 JST)
タイトル 1
詳細 555
名前 -1 OR 3+137-137-1=0+0+0+1 -- (2025-03-01 02:17:40 JST)
タイトル 1
詳細 555
名前 -1 OR 2+137-137-1=0+0+0+1 -- (2025-03-01 02:17:38 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 02:17:34 JST)
タイトル 1
詳細 555
名前 QlqzzNwr (2025-03-01 02:05:48 JST)
タイトル 1

||詳細|| 555