X-Git-Url: https://git.p6c8.net/selfforum.git/blobdiff_plain/8f99a6e4fd14417d4724241f30d154abdc27e789..989aad5e517fa5c6e2799dd5d5b096139e404c0c:/selfforum-cgi/shared/Encode/Posting.pm?ds=sidebyside diff --git a/selfforum-cgi/shared/Encode/Posting.pm b/selfforum-cgi/shared/Encode/Posting.pm index ffafbf1..4ff9410 100644 --- a/selfforum-cgi/shared/Encode/Posting.pm +++ b/selfforum-cgi/shared/Encode/Posting.pm @@ -11,16 +11,26 @@ package Encode::Posting; ################################################################################ use strict; +use vars qw( + @EXPORT + $VERSION +); use Encode::Plain; $Encode::Plain::utf8 = 1; use CheckRFC; +################################################################################ +# +# Version check +# +$VERSION = do { my @r =(q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r }; + ################################################################################ # # Export # use base qw(Exporter); -@Encode::Posting::EXPORT = qw( +@EXPORT = qw( encoded_body answer_field message_field @@ -71,7 +81,7 @@ sub encoded_body ($;$) { my @rawlinks; push @rawlinks => [$1 => $2] while ($posting =~ /\[([Ll][Ii][Nn][Kk]):\s*([^\]\s]+)\s*\]/g); my @links = grep { - is_URL ( $_ -> [1] => ':ALL') + is_URL ( $_ -> [1] => qw(http ftp news nntp telnet gopher mailto)) or is_URL (($_ -> [1] =~ /^[Vv][Ii][Ee][Ww]-[Ss][Oo][Uu][Rr][Cc][Ee]:(.+)/)[0] || '' => 'http') or ( $_ -> [1] =~ m<^(?:\.?\.?/(?!/)|\?)> and is_URL (rel_uri ($_ -> [1], $base) => 'http')) @@ -158,8 +168,8 @@ sub answer_field ($$) { my $area = $$posting; my $qchar = $params -> {quoteChars}; - $area =~ s/
/\n/g; #
=> \n - $area =~ s/&(?:#160|nbsp);/ /g; # nbsp => ' ' + $area =~ s//\n/g; #
=> \n + $area =~ s/&(?:#160|nbsp);/ /g; # nbsp => ' ' $area =~ s/^(.)/\177$1/gm if ($params -> {quoteArea}); # shift a quoting character $area =~ s/^(\177+)/$qchar x length ($1)/gem; # decode normalized quoting characters @@ -208,12 +218,12 @@ sub message_field ($$) { my $posting = ${+shift}; my $params = shift || {}; - my $break = '
'; + my $break = '
'; if ($params -> {quoting}) { # quotes are displayed as special? my @array = [0 => []]; - for (split /
/ => $posting) { + for (split // => $posting) { my $l = length ((/^(\177*)/)[0]); if ($array[-1][0] == $l) { push @{$array[-1][-1]} => $_; @@ -225,7 +235,7 @@ sub message_field ($$) { shift @array unless @{$array[0][-1]}; my $ll=0; - $posting = join '
' => map { + $posting = join $break => map { my $string = $_->[0] ? (($ll and $ll != $_->[0]) ? $break : '') . join join ($break => @{$_->[-1]})