レンダラに渡す設定

レンダラに渡す設定

レンダラに渡す設定は、以下のように配列で記述する。全ての項目は省略可能である。

<?php

$config = array(
    // ヘッダの基準値。デフォルトは1
    'headerlevel' => 3,                           

    // 記事の識別子。指定しない場合はランダムなIDが生成される
    'id' => 'hoge',                               

    // htmlをエスケープするか。デフォルトはtrue。
    'htmlescape' => false,                        

    // 記事本体を囲むdiv要素のクラス。デフォルトは'section'
    'sectionclass' => 'section',                  

    // 脚注を囲むdiv要素のクラス。デフォルトは'footnote'
    'footnoteclass' => 'footnote',                

    // キーワード記法のキーワードをアドレスに処理するコールバック
    'keywordlinkhanlder' => 'keywordLinkHandler', 

    // superpre記法の中身を処理するコールバック
    'superprehandler' => 'spreHandler',

    // [http://~~:title]のリンクを処理するコールバック
    'linktitlehandler' => 'linkTitleHandler'
);

echo HatenaSyntax::render($str, $config);

各項目については以下で説明する。

headerlevel - ヘッダの基準値

はてな記法のヘッダの基準値を設定する。例えば 1 に設定した場合、'*'がひとつの見出し記法はh1タグを使って変換される。

<?php

echo HatenaSyntax::render('* header', array('headerlevel' => 1));
/*
<div class="section">
<h1> header<a name="dd7a3c428fa04b8456e3d47d6d930092_header_0" id="dd7a3c428fa04b8456e3d47d6d930092_header_0"></a></h1>
</div>
*/

id - 記事の識別子

ページ内リンクで利用される記事の識別子を指定する。

指定されなかった場合はランダムなidが生成される。

htmlescape - HTMLをエスケープするか

はてな記法内のHTMLをエスケープするか否か。

デフォルトはfalse。

sectionclass - 記事を囲むdiv要素のクラス

記事を囲むdiv要素のクラス属性を指定する。

デフォルトは'section'。

footnoteclass - 脚注を囲むdiv要素のクラス

脚注を囲むdiv要素のクラス属性を指定する。

デフォルトは'footnote'。

keywordlinkhandler - キーワード記法のキーワードをアドレスに変換するコールバック

キーワード記法のキーワードからアドレスを返すコールバックを指定する。

<?php

function handler($keyword)
{
    return './' . $keyword;
}

$str = '[[my_keyword]]';

echo HatenaSyntax::render($str, array('keywordlinkhandler' => 'handler'));
/*
<div class="section">
<p><a href="./my_keyword">my_keyword</a></p>
</div>
 */

superprehandler - superpre記法の中身を処理するコールバック

suprepre記法の中身を処理するコールバックを指定する。

コールバックに渡される引数

最初の引数にその文書の種類(>|hoge|~~||<のhogeの部分)が渡され、二番目の引数に中身の行の配列が渡される。行の配列は、htmlescapeの値に関わらずhtmlエスケープされないので注意する。

<?php

function spre($type, Array $lines)
{
    foreach ($lines as &$line) {
        $line = htmlspecialchars($line, ENT_QUOTES, 'UTF-8');
    }
    return '<pre>' . PHP_EOL . join(PHP_EOL, $lines) . '</pre>' . PHP_EOL;
}

$str = '
>|php|
Lorem ipsum dolor sit amet, 
consectetur adipisicing elit, 
sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua. 
||<';

echo HatenaSyntax::render($str, array('superprehandler' => 'spre'));
/*
<div class="section">

<pre>
Lorem ipsum dolor sit amet, 
consectetur adipisicing elit, 
sed do eiusmod tempor incididunt 
ut labore et dolore magna aliqua. </pre>

</div>
 */

linktitlehandler - リンクのタイトルを処理するコールバック

[http://example.com:title]という形式のhttp記法をhtmlに変換する際に、URLからタイトルを取得するコールバックを指定する。このコールバックは、引数にURLを取ってタイトルを返さなければならない。

 
?
閉じる
C-s
保存
C-a
行頭へ移動
C-e
行末へ移動
C-p
一行上へ
C-n
一行下へ
C-f
右に移動
C-b
左に移動
C-m
改行
C-h
backspace