【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

randomプラグイン - * 概要

目次

概要

サイト内のWikiページにランダムにジャンプしたり、 ランダムなページのリストを表示したりします。

 &random(ランダムにジャンプ)
 #random(5)

コード

# YukiWiki Random Plugin (Public Domain)

use strict;

package random;

sub plugin_inline {
    my ($escaped_argument, $context) = @_;
    my $dbref = $context->{database};
    my @list = keys( %$dbref );
    srand();
    my $page = $list[ int( rand( @list ) )];
    my $cookedpage = &main::encode($page);
    return qq(<a href="$context->{url_cgi}?$cookedpage">$escaped_argument</a>);
}

sub plugin_block {
    my ($escaped_argument, $context) = @_;
    my $dbref = $context->{database};
    my @list = keys( %$dbref );
    my $max = 10;
    my $block = "<ul>\n";
    if ( $escaped_argument <= 30 and $escaped_argument > 0) {
        $max = $escaped_argument;
    }
    if ( $max > @list ) {
        $max = 0 + @list;
    }
    srand();
    for ( my $i=0; $i<$max; $i++ ) {
        my $page = splice( @list, int( rand( @list ) ), 1 );
        my $cookedpage = &main::encode($page);
        my $escapedpage = &main::escape($page);
        $block .= qq(<li><a href="$context->{url_cgi}?$cookedpage">$escapedpage</a></li>\n);
    }
    $block .= "</ul>\n";
    return $block;
}

sub plugin_usage {
    return {
        name => 'random',
        version => 'v20041109',
        author => 'Seiji Zenitani <zenitani at mac.com>',
        syntax => '&random(caption), #random(count)',
        description => 'Generate a random link or a random page list.',
        example => '&random(random link), #random(10)',
    };
}

1;