1afd193eda9a6bc703011a72afa273e560355713
commit 1afd193eda9a6bc703011a72afa273e560355713
Author: spesk1 <spesk@pm.me>
Date: Sat Jun 22 20:07:58 2019 +0000

Final fix for escaping HTML contained in source files

diff --git a/lib/Gsg/Html.pm b/lib/Gsg/Html.pm
index 24486de..77014a8 100644
--- a/lib/Gsg/Html.pm
+++ b/lib/Gsg/Html.pm
@@ -54,6 +54,36 @@ sub write_root_index($$$$) {

}

+sub check_for_html($) {
+
+ # Expects line from gen_line_nums or gen_diff_colors
+ # Will change < and > chars to < or >
+ # This adds tons of overhead, but should work better
+ # than <xmp> and will solve the rendering problems
+ my $line = shift;
+ my $new_line;
+ open my $fh, '>>', \$new_line or die "Can't open variable: $!";
+ foreach my $char ( split("",$line) ) {
+ if ( ! defined $char || $char eq "" ) {
+ print "Empty char\n";
+ next;
+ }
+
+ if ( $char eq "<" ) {
+ print $fh "<";
+ } elsif ( $char eq ">" ) {
+ print $fh ">";
+ } else {
+ print $fh "$char";
+ }
+ }
+
+ close $fh;
+ return $new_line;
+
+}
+
+
sub gen_line_nums($$) {

my $raw_file = shift;
@@ -66,6 +96,9 @@ sub gen_line_nums($$) {
print $fh "<!DOCTYPE html><html><div id=\"content\"><pre id=\"blob\">";
my $line_counter = 1;
foreach my $line ( split("\n", $raw_file) ) {
+ if ( $line ne "" ) {
+ $line = check_for_html($line);
+ }
print $fh "<a href=\"\#l$line_counter\" class=\"line\" id=\"l$line_counter\">$line_counter</a>\t$line</br>";
$line_counter++;
}
@@ -90,18 +123,22 @@ sub gen_diff_colors($$) {
print $fh "<!DOCTYPE html><html><div id=\"content\"><pre>";
my $line_counter = 1;
foreach my $line ( split("\n", $raw_diff) ) {
+ if ( $line ne "" ) {
+ $line = check_for_html($line);
+ }
+
if ( $line =~ m/^\+/ ) {
- print $fh "<font color=\"green\"><xmp>$line</xmp></font>";
+ print $fh "<font color=\"green\">$line</font></br>";
} elsif ( $line =~ m/^\-/ ) {
- print $fh "<font color=\"red\"><xmp>$line</xmp></font>";
+ print $fh "<font color=\"red\">$line</font></br>";
} elsif ( $line =~ m/^@@/ ) {
- print $fh "<font color=\"blue\"><xmp>$line</xmp></font>";
+ print $fh "<font color=\"blue\">$line</font></br>";
} elsif ( $line =~ m/^diff/ ) {
- print $fh "<font color=\"purple\"><xmp>$line</xmp></font>";
+ print $fh "<font color=\"purple\">$line</font></br>";
} elsif ( $line =~ m/^commit/ ) {
- print $fh "<font color=\"purple\"><b><xmp>$line</xmp></b></font>";
+ print $fh "<font color=\"purple\"><b>$line</b></font></br>";
} else {
- print $fh "<xmp>$line</xmp>";
+ print $fh "$line</br>";
}
$line_counter++;
}