Accept comma separated converter names, separate Atom from Html and Gemini converters.
Note: atom must be called separately now because of the separation. Example txt convert -t htm,atom xyz git-svn-id: file:///srv/svn/repo/kosuzu/trunk@19 eb64cd80-c68d-6f47-b6a3-0ada418499da
This commit is contained in:
30
cli/html.ml
30
cli/html.ml
@@ -14,8 +14,8 @@ let init kv =
|
||||
let footer = to_string "HTM-footer" kv in
|
||||
{ templates = { header; footer} }
|
||||
|
||||
let wrap c htm text_title body =
|
||||
let site_title = try Logarion.Store.KV.find "Title" c.Conversion.kv
|
||||
let wrap conv htm text_title body =
|
||||
let site_title = try Logarion.Store.KV.find "Title" conv.Conversion.kv
|
||||
with Not_found -> "" in
|
||||
let replace x = let open Str in
|
||||
global_replace (regexp "{{archive-title}}") site_title x
|
||||
@@ -57,7 +57,8 @@ let page htm conversion text =
|
||||
let authors = (Person.Set.to_string text.authors ^ " ") in
|
||||
let keywords = str_set "keywords" text in
|
||||
let header =
|
||||
let time x = {|<time datetime="|} ^ x ^ {|">|} ^ x ^ "</time>" in
|
||||
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 =
|
||||
let ts = Topic_set.of_string t in
|
||||
@@ -66,7 +67,7 @@ let page htm conversion text =
|
||||
"<article><header><dl>"
|
||||
^ opt_kv "Title:" text.title
|
||||
^ opt_kv "Authors:" authors
|
||||
^ opt_kv "Date: " (time (Date.(pretty_date @@ listing text.date)))
|
||||
^ opt_kv "Date: " (time (Date.listing text.date))
|
||||
^ opt_kv "Series: " (str_set "series" text)
|
||||
^ opt_kv "Topics: " (topic_links (set "topics" text))
|
||||
^ opt_kv "Keywords: " keywords
|
||||
@@ -161,24 +162,15 @@ let topic_sub_index conv htm topic_map topic_root metas =
|
||||
(* ^ {|<a href=".atom" id="feed">|}^ String.capitalize_ascii topic_root ^{| feed </a>|}*)
|
||||
^ listing_index topic_map [topic_root] "" metas)
|
||||
|
||||
open Logarion
|
||||
let indices htm c =
|
||||
let file name = Logarion.File_store.file (Filename.concat c.Conversion.dir name) in
|
||||
let index_name = try Store.KV.find "HTM-index" c.Conversion.kv with Not_found -> "index.html" in
|
||||
let title = try Store.KV.find "Title" c.Conversion.kv with Not_found -> "" in
|
||||
|
||||
if index_name <> "" then
|
||||
file index_name (topic_main_index c htm c.topic_roots c.texts);
|
||||
|
||||
let index_name = try Logarion.Store.KV.find "HTM-index" c.Conversion.kv with Not_found -> "index.html" in
|
||||
if index_name <> "" then file index_name (topic_main_index c htm c.topic_roots c.texts);
|
||||
file "index.date.htm" (date_index c htm c.texts);
|
||||
|
||||
List.iter
|
||||
(fun root -> file ("index." ^ root ^ ".htm") (topic_sub_index c htm c.topics root c.texts))
|
||||
c.topic_roots;
|
||||
c.topic_roots
|
||||
|
||||
let base_url = try
|
||||
let locs = Store.KV.find "Locations" c.kv in
|
||||
let _i = Str.(search_forward (regexp "https?://[^;]*") locs 0) in
|
||||
Str.(matched_string locs)
|
||||
with Not_found -> prerr_endline "Missing location for HTTP(S)"; "" in
|
||||
file "feed.atom" (Atom.feed title c.id base_url "text/html" c.texts)
|
||||
let converter kv =
|
||||
let htm = init kv in
|
||||
Conversion.{ ext; page = Some (page htm); indices = Some (indices htm) }
|
||||
|
||||
Reference in New Issue
Block a user