From 06791284618e8840724caa5e65fa535ea0438b61 Mon Sep 17 00:00:00 2001 From: David Steele Date: Fri, 6 Aug 2021 09:48:55 -0400 Subject: [PATCH] Add linefeeds around content even when not in pretty mode. This makes the generated HTML much more readable in diffs because a single word change will not change a line with potentially many tags. The output is now slightly larger because of the extra linefeeds. --- doc/lib/pgBackRestDoc/Html/DocHtmlBuilder.pm | 68 +++++++++++++------- 1 file changed, 43 insertions(+), 25 deletions(-) diff --git a/doc/lib/pgBackRestDoc/Html/DocHtmlBuilder.pm b/doc/lib/pgBackRestDoc/Html/DocHtmlBuilder.pm index 874fb380c..de6f242d9 100644 --- a/doc/lib/pgBackRestDoc/Html/DocHtmlBuilder.pm +++ b/doc/lib/pgBackRestDoc/Html/DocHtmlBuilder.pm @@ -121,8 +121,25 @@ sub htmlRender {name => 'iDepth', trace => true} ); - # Build the header - my $strHtml = + # If a pre tag add a linefeed before the tag unless the prior tag was also pre. This makes the output more diffable. + my $strHtml = ""; + + if ($oElement->{strType} eq HTML_PRE && !$self->{bPretty}) + { + if (!$self->{bPrePrior}) + { + $strHtml .= "\n"; + } + + $self->{bPrePrior} = true; + } + else + { + $self->{bPrePrior} = false; + } + + # Build the tag + $strHtml .= $self->indent($iDepth) . "<$oElement->{strType}" . (defined($oElement->{strClass}) ? " class=\"$oElement->{strClass}\"": '') . (defined($oElement->{strRef}) ? " href=\"$oElement->{strRef}\"": '') . @@ -135,7 +152,9 @@ sub htmlRender { $oElement->{strContent} =~ s/\n/\\n/g; $oElement->{strContent} = trim($oElement->{strContent}); - $strHtml .= $self->lf(); + + # Add a linefeed before the content if not pre. This makes the output more diffable. + $strHtml .= "\n"; } else { @@ -144,9 +163,10 @@ sub htmlRender $strHtml .= $oElement->{strContent}; + # Add a linefeed after the content if not pre. This makes the output more diffable. if (!defined($oElement->{bPre}) || !$oElement->{bPre}) { - $strHtml .= $self->lf() . $self->indent($iDepth); + $strHtml .= "\n" . $self->indent($iDepth); } } else @@ -167,7 +187,10 @@ sub htmlRender } } - $strHtml .= "{strType}>" . $self->lf(); + $strHtml .= "{strType}>"; + + # If a pre tag add an lf after the tag. This makes the output more diffable. + $strHtml .= $oElement->{strType} eq HTML_PRE ? "\n" : $self->lf(); # Return from function and log return values if any return logDebugReturn @@ -211,40 +234,37 @@ sub htmlGet " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">" . $self->lf() . $self->indent(0) . "" . $self->lf() . $self->indent(0) . "" . $self->lf() . - $self->indent(1) . '' . $self->escape($self->{strTitle}) . '' . $self->lf() . - $self->indent(1) . "" . $self->lf(); + $self->indent(1) . "\n" . + $self->indent(2) . $self->escape($self->{strTitle}) . "\n" . + $self->indent(1) . '' . $self->lf() . + $self->indent(1) . "\n"; if (!$self->{bCompact}) { $strHtml .= - # $self->indent(1) . "" . $self->lf() . - $self->indent(1) . - '' . $self->lf() . - $self->indent(1) . - '' . $self->lf() . - $self->indent(1) . '' . $self->lf(); + # $self->indent(1) . "\n" . + $self->indent(1) . '\n" . + $self->indent(1) . '\n" . + $self->indent(1) . "\n"; if (defined($self->{strFavicon})) { - $strHtml .= - $self->indent(1) . "{strFavicon}\" type=\"image/png\">" . $self->lf(); + $strHtml .= $self->indent(1) . "{strFavicon}\" type=\"image/png\">\n"; } if (defined($self->{strLogo})) { $strHtml .= - $self->indent(1) . "" . $self->lf() . - $self->indent(1) . "{strLogo}\">" . - $self->lf(); + $self->indent(1) . "\n" . + $self->indent(1) . "{strLogo}\">\n"; } if (defined($self->{strDescription})) { $strHtml .= + $self->indent(1) . '\n" . $self->indent(1) . - '' . $self->lf() . - $self->indent(1) . - '' . $self->lf(); + '\n"; } } @@ -259,14 +279,12 @@ sub htmlGet $strCss =~ s/\/\*.*?\*\///g; } - $strHtml .= - $self->indent(1) . '' . $self->lf(); + $strHtml .= $self->indent(1) . "\n"; } else { $strHtml .= - $self->indent(1) . "" . $self->lf(); + $self->indent(1) . "\n"; } $strHtml .=