From 6dfdfa5f38690608af3c892f231d98c6bc6df2d4 Mon Sep 17 00:00:00 2001 From: in2 Date: Mon, 29 Mar 2004 03:48:13 +0000 Subject: wiki like support git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1624 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- blog/blog.pl | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'blog/blog.pl') diff --git a/blog/blog.pl b/blog/blog.pl index 8126bc6f..3f851d3b 100755 --- a/blog/blog.pl +++ b/blog/blog.pl @@ -15,6 +15,7 @@ use POSIX; use MD5; use Mail::Sender; use Data::Serializer; +use Encode; use vars qw/@emonth @cnumber %config %attr %article %th $dbh $brdname/; @@ -322,13 +323,14 @@ $comment compress => 0, ); open FH, '<'.$attr{"$fn.loadSerialized"}; - FH->read($str, 104857600); + FH->read($str, -s $attr{"$fn.loadSerialized"}); close FH; %h = %{$obj->deserialize($str)}; $th{$_} = $h{$_} foreach( keys %h ); } # ¥Î Template Toolkit ¿é¥X + $th{LANG} =~ s/zh_TW/zh-TW/; mkdir "$BLOGCACHE/$brdname"; $tmpl = Template->new({INCLUDE_PATH => '.', ABSOLUTE => 0, @@ -349,6 +351,17 @@ $comment undef $tmpl; } +sub utf8dump($;$) +{ + my($str, $prefix) = @_; + my $ret = $prefix || ''; + my $ostr = $str; + Encode::from_to($str, 'big5', 'utf-8'); + $ret .= '%'. sprintf('%x', ord($_)) + foreach( split(//, $str) ); + return "$ostr"; +} + sub AddArticle($$$;$) { my($cl, $fields, $s, $score) = @_; @@ -400,7 +413,7 @@ sub applyfilter($$) $c =~ s/\>/>/gs; $c =~ s/\"/"/gs; $c =~ s/\'/'/gs; - $c =~ s/ / /gs; +# $c =~ s/ / /gs; } elsif( /^ubb$/i ){ $c =~ s|\[url\](.*?)\[/url\]|$1|gsi; @@ -410,6 +423,14 @@ sub applyfilter($$) $c =~ s|\[i\](.*?)\[/i\]|$1|gsi; $c =~ s|\[img\](.*?)\[/img\]|(null)|gsi; } + elsif( /^wiki$/i ){ + my $t; + $c =~ s|\[(http://\S+) (.*?)\]|\[ $2 \]|gi; + $c =~ s|([^\>\"])(http://\S+\.(:?jpg\|gif\|png\|bmp))|$1$2|gsi; + $c =~ s|([^\>\"])(http://\S+)|$1$2|gsi; + $c =~ s|\(\((.*?)\)\)|utf8dump($1, $th{wikibase})|gsie; + $c =~ s|^\-{4,}$|
|gm; + } } return $c; } -- cgit v1.2.3