Reverse all the HTML changes, add a generator meta tag, and a To-do

Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>

git-svn-id: file:///srv/svn/repo/kosuzu/trunk@59 eb64cd80-c68d-6f47-b6a3-0ada418499da
This commit is contained in:
yakumo.izuru 2024-02-13 23:23:38 +00:00
parent a748374492
commit 962d11f92b
2 changed files with 20 additions and 17 deletions

3
TODO.md Normal file
View File

@ -0,0 +1,3 @@
# To-do
* Support [geomyidae](gopher://bitreich.org/1/scm/geomyidae) `.gph` indexes, for now those can be generated manually somewhat
* Support tab-separated value gophermaps for any other gopher daemon

View File

@ -31,8 +31,8 @@ let wrap conv htm text_title body =
(if feed <> "" then sprintf "<a href='%s' id='feed'>feed</a>" feed else ""))
in
let footer = match htm.templates.footer with None -> "" | Some x -> replace x in
Printf.sprintf "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n<link rel=\"icon\" href=\"/favicon.png\">\n<title>%s%s</title>\n%s\n%s\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n</head>\n<body>\n%s%s%s</body>\n</html>"
text_title (if site_title <> "" then (" " ^ site_title) else "")
Printf.sprintf "<!DOCTYPE HTML>\n<html>\n<head>\n<link rel=\"icon\" href=\"/favicon.png\">\n<title>%s%s</title>\n%s\n%s\n<meta name=\"generator\" content=\"Logarion\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n</head>\n<body>\n%s%s%s</body>\n</html>"
text_title (if site_title <> "" then (" &bull; " ^ site_title) else "")
htm.style
(if feed <> "" then Printf.sprintf "<link rel='alternate' href='%s' type='application/atom+xml'>" feed else "")
header body footer
@ -59,7 +59,7 @@ let page htm conversion text =
then "<dt>" ^ key ^ "<dd>" ^ value else "" in
let authors = Person.Set.to_string text.authors in
let header =
let time x = Printf.sprintf {|<span class="%s">%s</span>|}
let time x = Printf.sprintf {|<time datetime="%s">%s</time>|}
(Date.rfc_string x) (Date.pretty_date x) in
let topic_links x =
let to_linked t a =
@ -72,7 +72,7 @@ let page htm conversion text =
let references, replies = let open Conversion in
let Rel.{ref_set; rep_set; _} = try Rel.Id_map.find text.id conversion.relations with Not_found -> Rel.empty in
ref_links ref_set, ref_links rep_set in
"<dl>"
"<article><header><dl>"
^ opt_kv "Title:" text.title
^ opt_kv "Authors:" authors
^ opt_kv "Date:" (time (Date.listing text.date))
@ -83,8 +83,8 @@ let page htm conversion text =
^ opt_kv "In reply to:" (ref_links (set "in-reply-to" text))
^ opt_kv "Referred by:" references
^ opt_kv "Replies:" replies
^ {|</dl><pre style="white-space:pre-wrap">|} in
wrap conversion htm text.title ((T.of_string text.body header) ^ "</pre>")
^ {|</dl></header><pre style="white-space:pre-wrap">|} in
wrap conversion htm text.title ((T.of_string text.body header) ^ "</pre></article>")
let to_dated_links ?(limit) meta_list =
let meta_list = match limit with
@ -95,7 +95,7 @@ let to_dated_links ?(limit) meta_list =
| h::t -> if i < limit then reduced (h::acc) (i+1) t else acc in
List.rev @@ reduced [] 0 meta_list in
List.fold_left
(fun a m -> Printf.sprintf "%s<li>%s&ensp;<a href=\"%s.htm\">%s</a></li>" a Logarion.(Date.(pretty_date (listing m.Text.date)))
(fun a m -> Printf.sprintf "%s <li> %s <a href=\"%s.htm\">%s</a>" a Logarion.(Date.(pretty_date (listing m.Text.date)))
(Logarion.Text.short_id m) m.Logarion.Text.title)
"" meta_list
@ -106,9 +106,9 @@ let date_index ?(limit) conv htm meta_list =
let fold_topic_roots topic_roots =
let list_item root t = "<li>" ^ topic_link root t in
"<h2>Main topics</h2>"
"<nav><h2>Main topics</h2>"
^ List.fold_left (fun a x -> a ^ list_item x x) "<ul>" (List.rev topic_roots)
^ "</ul>"
^ "</ul></nav>"
let fold_topics topic_map topic_roots metas =
let open Logarion in
@ -123,15 +123,15 @@ and list_item root t =
if List.exists (fun x -> String_set.mem t (String_set.map Topic_set.topic (Text.set "topics" x))) metas
then topic_link root t else String.capitalize_ascii t in
"<ul><li>" ^ item ^ sub_items root t ^ "</ul>" in
"<h2>Topics</h2>"
"<nav><h2>Topics</h2>"
^ List.fold_left (fun a x -> a ^ list_item x x) "<ul>" (List.rev topic_roots)
^ "</ul>"
^ "</ul></nav>"
let text_item path meta =
let open Logarion in
"<p>" ^ Date.(pretty_date (listing meta.Text.date))
^ {|<a href="|} ^ path ^ Text.short_id meta ^ {|.htm">|} ^ meta.Text.title
^ "</a></p><br>"
"<time>" ^ Date.(pretty_date (listing meta.Text.date))
^ {|</time> <a href="|} ^ path ^ Text.short_id meta ^ {|.htm">|} ^ meta.Text.title
^ "</a><br>"
let listing_index topic_map topic_roots path metas =
let rec item_group topics =
@ -149,13 +149,13 @@ and items topic =
match items with
| "" -> ""
| x -> {|<h2 id="|} ^ topic ^ {|">|} ^ String.capitalize_ascii topic ^ "</h2>" ^ x in
"<h1>Texts</h1>" ^ item_group topic_roots ^ ""
"<nav><h1>Texts</h1>" ^ item_group topic_roots ^ "</nav>"
let topic_main_index conv htm topic_roots metas =
wrap conv htm "Topics"
(fold_topic_roots topic_roots
^ "<h1>Latest</h1><ul>" ^ to_dated_links ~limit:10 metas
^ {|<p><a href="index.date.htm">More by date</a></p>|}
^ "<nav><h1>Latest</h1><ul>" ^ to_dated_links ~limit:10 metas
^ {|</ul></nav><hr><a href="index.date.htm">More by date</a>|}
^ let peers = try Logarion.Store.KV.find "Peers" conv.kv with Not_found -> "" in
(if peers = "" then "" else
List.fold_left (fun a s -> Printf.sprintf {|%s<li><a href="%s">%s</a>|} a s s) "<h1>Peers</h1><ul>"