- Removed 'txt init'
Format - New B32 ID Index - New option: txt index --print - Move scheme to peers - Replace peer.*.conf files with index packed locations Instead of adding a URL to peers.*.conf, run `txt pull <url>` Conversion - Rewritten converters - txt-convert looks for a .convert.conf containing `key: value` lines. - Specifiable topic-roots from .convert.conf. - Added `Topics:` key, with comma seperated topics. If set only those topics will appear in the main index and used as topic roots. Other topics will have sub-indices generated, but won't be listed in the main index. - HTML converter header & footer options - HTML-index renamed to HTM-index Internal - Change types: uuid:Uuid -> id:string - File_store merges identical texts - Use peer ID for store path, store peers' texts in .local/share/texts - Simple URN resolution for converter Continue to next feed if parsing one fails - Phasing-out Archive, replaced by improved packs - Eliminate Bos, Cohttp, lwt, uri, tls, Re, Ptime, dependencies - Lock version for Cmdliner, fix dune-project - Optional resursive store - Improve header_pack - Fix recursive mkdir git-svn-id: file:///srv/svn/repo/kosuzu/trunk@3 eb64cd80-c68d-6f47-b6a3-0ada418499da
This commit is contained in:
@@ -1,9 +1,17 @@
|
||||
let page _archive_title text =
|
||||
let ext = ".gmi"
|
||||
|
||||
module GeminiConverter = struct
|
||||
include Converter.Gemini
|
||||
let angled_uri u a = if String.sub u 0 10 <> "urn:txtid:" then
|
||||
angled_uri u a else angled_uri (String.(sub u 10 (length u - 10)) ^ ext) a
|
||||
end
|
||||
|
||||
let page _conversion text =
|
||||
let open Logarion.Text in
|
||||
"# " ^ text.title
|
||||
^ "\nAuthors: " ^ Logarion.Person.Set.to_string text.authors
|
||||
^ "\nDate: " ^ Logarion.Date.(pretty_date @@ listing text.date)
|
||||
^ let module T = Parsers.Plain_text.Make (Converter.Gemini) in
|
||||
^ let module T = Parsers.Plain_text.Make (GeminiConverter) in
|
||||
"\n" ^ T.of_string text.body ""
|
||||
|
||||
let date_index title meta_list =
|
||||
@@ -30,8 +38,9 @@ let to_dated_links ?(limit) meta_list =
|
||||
^ m.Logarion.Text.title ^ "\n")
|
||||
"" meta_list
|
||||
|
||||
let topic_link root topic =
|
||||
"=> index." ^ root ^ ".gmi " ^ String.capitalize_ascii topic ^ "\n"
|
||||
let topic_link root topic =
|
||||
let replaced_space = String.map (function ' '->'+' | x->x) in
|
||||
"=> index." ^ replaced_space root ^ ".gmi " ^ String.capitalize_ascii topic ^ "\n"
|
||||
|
||||
let text_item path meta =
|
||||
let open Logarion in
|
||||
@@ -71,3 +80,25 @@ let topic_main_index title topic_roots metas =
|
||||
let topic_sub_index title topic_map topic_root metas =
|
||||
"# " ^ title ^ "\n\n"
|
||||
^ listing_index topic_map [topic_root] "" metas
|
||||
|
||||
let indices r =
|
||||
let open Logarion in
|
||||
let file name = File_store.file (Filename.concat r.Conversion.dir name) in
|
||||
let index_name = try Store.KV.find "Gemini-index" r.kv with Not_found -> "index.gmi" in
|
||||
let title = try Store.KV.find "Title" r.Conversion.kv with Not_found -> "" in
|
||||
|
||||
if index_name <> "" then
|
||||
file index_name (topic_main_index title r.topic_roots r.texts);
|
||||
|
||||
file "index.date.gmi" (date_index title r.texts);
|
||||
|
||||
List.iter
|
||||
(fun topic -> file ("index." ^ topic ^ ".gmi")
|
||||
(topic_sub_index title r.topics topic r.texts))
|
||||
r.topic_roots;
|
||||
|
||||
let base_url = try
|
||||
let _i = Str.(search_forward (regexp "gemini?://[^;]*") (Store.KV.find "Locations" r.kv) 0) in
|
||||
Str.(matched_string (Store.KV.find "Locations" r.kv))
|
||||
with Not_found -> prerr_endline "Missing location for Gemini"; "" in
|
||||
file "gmi.atom" (Atom.feed title r.id base_url "text/gemini" r.texts)
|
||||
|
||||
Reference in New Issue
Block a user