表紙 | 新規 | 一覧 | RSS | 検索 | 閲覧履歴 | 作成履歴 | 更新履歴

inline関数 - YukiWikiベースのPonyWikiのソースを読んでみる その22

差分表示


[[YukiWikiベースのPonyWikiのソースを読んでみる]] その22

文字の修飾や、リンクの処理を行っている関数

処理の流れは以下の通り。

- まずは[[escape関数]]を通す
- Italic体の処理
- Boldの処理
- &del(Italic体の処理)
- &del(Boldの処理)
- 文字列が日付の形式であればcss設定
-- 2004-12-01 (Wed) 15:08:57みたいな形式

- 以下の該当すれば[[make_link関数]]で処理
-- 次のスキーマで始まるもの
--- mailto
--- http
--- https
--- ftp
-- &verb($bracket_name)に該当するもの
--- &verb([[[[]]]])で括られているもの
-- インラインプラグイン


---(
sub inline {
    my ($line) = @_;
    $line = &escape($line);
    $line =~ s|'''([^']+?)'''|<i>$1</i>|g;  # Italic
    $line =~ s|''([^']+?)''|<b>$1</b>|g;    # Bold
    $line =~ s|(\d\d\d\d-\d\d-\d\d \(\w\w\w\) \d\d:\d\d:\d\d)|<span class="date">$1</span>|g;   # Date
    $line =~ s!
                (
                    ((mailto|http|https|ftp):([^\x00-\x20()<>\x7F-\xFF])*)  # Direct http://...
                        |
                    ($bracket_name)             # [[likethis]], [[#comment]], [[Friend:remotelink]]
                        |
                    ($wiki_name)                # LocalLinkLikeThis
                        |
                    ($inline_plugin)            # &user_defined_plugin(123,hello)
                )
            !
                &make_link($1)
            !gex;
    return $line;
}
---)

- [[escape関数]]
- [[make_link関数]]

----
[[#trackback]]

先頭へ