about summary refs log tree commit homepage
path: root/Documentation/txt2pre
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2014-04-19 19:19:06 +0000
committerEric Wong <e@80x24.org>2014-04-19 23:10:12 +0000
commit6a414a4087a59ad8c62cbef30984632ea31ced23 (patch)
tree113e0937e35f110496027a95415fc346f7f532d5 /Documentation/txt2pre
parent6dfb9311700d09fb019bee74d2b420c6cdea8b8f (diff)
downloadpublic-inbox-6a414a4087a59ad8c62cbef30984632ea31ced23.tar.gz
We have an HTML homepage, OMG!
Diffstat (limited to 'Documentation/txt2pre')
-rwxr-xr-xDocumentation/txt2pre26
1 files changed, 26 insertions, 0 deletions
diff --git a/Documentation/txt2pre b/Documentation/txt2pre
new file mode 100755
index 00000000..f84f9c06
--- /dev/null
+++ b/Documentation/txt2pre
@@ -0,0 +1,26 @@
+#!/usr/bin/env perl
+# Copyright (C) 2014, Eric Wong <normalperson@yhbt.net> and all contributors
+# License: AGPLv3 or later (https://www.gnu.org/licenses/agpl-3.0.txt)
+#
+# Stupid script to make HTML from preformatted, utf-8 text versions,
+# only generating links for http(s).  Markdown does too much
+# and requires indentation to output preformatted text.
+use strict;
+use warnings;
+use CGI qw/escapeHTML/;
+use Encode qw/encode/;
+my $str = eval { local $/; <> };
+$str = escapeHTML($str);
+$str = encode('us-ascii', $str, Encode::HTMLCREF);
+my ($title) = ($str =~ /\A([^\n]+)/);
+
+# temporarily swap &gt; for escape so our s!! to add href works.
+# there's probably a way to do this with only a single s!! ...
+$str =~ s!&gt;!\e!g;
+$str =~ s!\b(https?://[\w+\+\&\?\.\%\;/-]+)!<a\nhref="$1"\n>$1</a>!g;
+$str =~ s!\e!&gt;!g; # swap escapes back to &gt;
+
+print '<html><head>',
+  '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />',
+  "<title>$title</title>",
+  "</head><body>\n<pre>",  $str , '</pre></body></html>';