Hoi,
the current fix was still buggy. Actually it didn't work.
Attached is a fix that does work. (I checked it against severeal man
pages.)
meillo
diff --git a/roffit b/roffit
index 3d924f9..b7d643f 100755
--- a/roffit
+++ b/roffit
@@ -178,27 +178,30 @@ sub linkfile {
sub handle_italic_bold ($) {
local $_ = shift;
+ my $inspan = 0;
- while ( m,^(.*?)(\\f[IB].*?\\fR)(.*), ) {
- my ($before, $match, $after) = ($1, $2, $3);
+ while ( m,^(.*?)\\f(.)(.*), ) {
+ my ($before, $font, $after) = ($1, $2, $3);
+ my $match = '';
- my $counter = 0;
-
- while ( $match =~ s/\\fI/<span class=\"emphasis\">/ ) {
- $counter++;
+ if ($inspan) {
+ $match = '</span>';
+ $inspan = 0;
}
- while ( $match =~ s/\\fB/<span class=\"bold\">/ ) {
- $counter++;
+ if ($font eq 'I') {
+ $match .= '<span class="emphasis">';
+ $inspan = 1;
+ } elsif ($font eq 'B') {
+ $match .= '<span class="bold">';
+ $inspan = 1;
}
- my $tag = '</span>';
- my $end = $tag x $counter;
-
- $match =~ s/\\f[PR]/$end/;
-
$_ = $before . $match . $after;
}
+ if ($inspan) {
+ $_ .= '</span>';
+ }
$_;
}
@@ -470,7 +473,7 @@ sub parsefile {
$txt =~ s/\\\'/´\;/g;
$txt =~ s/\\\(co/©\;/g;
- $_ = handle_italic_bold $_;
+ $txt = handle_italic_bold $txt;
# replace backslash [something] with just [something]
$txt =~ s/\\(.)/$1/g;