commit d4f0c1255fb63988a0cd370b15eb4bbc1757f8ba
parent 6c976763f193e3016e660facc7a15558a79dc069
Author: St John Karp <contact@stjo.hn>
Date: Mon, 5 Jul 2021 07:28:30 -0500
Add support for a separate "clean title"
This allows the HTML <title> tag to use a different value from
the one in the article itself, which may be desirable for supporting
HTML tags in the article title. I've implemented support for replacing
the <cite> tag with numeric double quote entities.
Diffstat:
3 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/example/html.pl b/example/html.pl
@@ -4,25 +4,25 @@
% This is basically your static website's template.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-page(Entry, Title, Subtitle, Date) -->
+page(Entry, Title, Subtitle, Date, CleanTitle) -->
doctype,
newline,
- html(Entry, Title, Subtitle, Date),
+ html(Entry, Title, Subtitle, Date, CleanTitle),
newline.
-html(Entry, Title, Subtitle, Date) -->
+html(Entry, Title, Subtitle, Date, CleanTitle) -->
html_open,
newline,
- head(Title),
+ head(CleanTitle),
newline,
body(Entry, Title, Subtitle, Date),
newline,
html_close.
-head(Title) -->
+head(CleanTitle) -->
head_open,
newline, tab,
- title(Title),
+ title(CleanTitle),
newline, tab,
meta,
newline, tab,
@@ -123,9 +123,9 @@ title(null) -->
site_subtitle,
"</title>".
-title(Title) -->
+title(CleanTitle) -->
"<title>",
- anything(Title),
+ anything(CleanTitle),
"</title>".
styles -->
diff --git a/generate_rss.pl b/generate_rss.pl
@@ -57,7 +57,7 @@ files_to_articles([Filename|Filenames], [article(FormattedDate, FormattedTitle,
% Grab the link.
get_link(Filename, Link),
% Extract the title, entry, etc. from the HTML.
- page(Entry, Title, _, Date, HTML, []),
+ page(Entry, _, _, Date, Title, HTML, []),
% Format the date according to RFC 822.
format_date(FormattedDate, Date),
% XML escape the description.
diff --git a/parse_entry.pl b/parse_entry.pl
@@ -31,7 +31,7 @@ parse_entry(Filename):-
% parse_html(+HTML).
% Parse HTML into a Markdown file and write to stdout.
parse_html(HTML):-
- page(EntryCodes, Title, Subtitle, Date, HTML, []),
+ page(EntryCodes, Title, Subtitle, Date, _, HTML, []),
markdown(EntryCodes, Title, Subtitle, Date, MarkdownCodes, []),
write_codes(user_output, MarkdownCodes),
halt.
@@ -57,6 +57,17 @@ generate_entry(Filename):-
generate_html(Markdown):-
markdown(EntryCodes, Title, Subtitle, Date, Markdown, []),
markdown_to_html(EntryCodes, HTMLEntryCodes),
- page(HTMLEntryCodes, Title, Subtitle, Date, HTMLCodes, []),
+ clean_title(Title, CleanTitle),
+ page(HTMLEntryCodes, Title, Subtitle, Date, CleanTitle, HTMLCodes, []),
write_codes(user_output, HTMLCodes),
halt.
+
+
+% clean_title(+Title, -CleanTitle).
+% Replace select HTML tags in an entry title to make it suitable
+% for an HTML title.
+clean_title(null, null).
+
+clean_title(Title, CleanTitle):-
+ replace("<cite>", "“", Title, Title1),
+ replace("</cite>", "”", Title1, CleanTitle).