Changeset 38 in code for trunk


Ignore:
Timestamp:
Dec 4, 2022, 7:18:52 PM (2 years ago)
Author:
fox
Message:

Support References field

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/cli/html.ml

    r24 r38  
    4747module HtmlConverter = struct
    4848        include Converter.Html
    49         let angled_uri u a = if String.sub u 0 10 <> "urn:txtid:" then
    50                 angled_uri u a else angled_uri (String.(sub u 10 (length u - 10)) ^ ext) a
     49        let angled_uri u a =
     50                if try String.sub u 0 10 = "urn:txtid:" with Invalid_argument _ -> false
     51                then angled_uri (String.(sub u 10 (length u - 10)) ^ ext) a else angled_uri u a
    5152end
    5253
     
    6061(*      let author acc auth = sep_append acc Person.(auth.name ^ " ") in*)
    6162        let authors = Person.Set.to_string text.authors in
    62         let keywords = str_set "keywords" text in
    6363        let header =
    6464                let time x = Printf.sprintf {|<time datetime="%s">%s</time>|}
     
    6969                                sep_append a (List.fold_left (fun a t -> sep_append ~sep:" > " a (topic_link (List.hd ts) t)) "" ts) in
    7070                        String_set.fold to_linked x "" in
     71                let ref_links x =
     72                        let link l = HtmlConverter.angled_uri (String.(sub l 1 (length l-2))) "" in
     73                        String_set.fold (fun r a -> sep_append a (link r)) x ""
     74                in
    7175                "<article><header><dl>"
    7276                ^ opt_kv "Title:" text.title
     
    7579                ^ opt_kv "Series:" (str_set "series" text)
    7680                ^ opt_kv "Topics:" (topic_links (set "topics" text))
    77                 ^ opt_kv "Keywords:" keywords
    7881                ^ opt_kv "Id:" text.id
     82                ^ opt_kv "References:" (ref_links (set "references" text))
    7983                ^ {|</dl></header><pre style="white-space:pre-wrap">|} in
    8084        wrap conversion htm text.title ((T.of_string text.body header) ^ "</pre></article>")
  • trunk/header

    r14 r38  
    55Authors: List of name with optional set of <address>
    66Date-edited: ISO8601, use only when text edited
     7References: list of text ID links
    78
    89A blank line must follow the last header field.
  • trunk/lib/text.ml

    r3 r38  
    2626let set key m = try String_map.find (String.lowercase_ascii key) m.stringset_map with Not_found -> String_set.empty
    2727let str_set key m = String_set.to_string @@ set key m
    28 let with_str_set m key str = { m with stringset_map = String_map.add (String.lowercase_ascii key) (String_set.of_string str) m.stringset_map }
     28let with_str_set m key str = { m with
     29        stringset_map = String_map.add (String.lowercase_ascii key) (String_set.of_string str) m.stringset_map
     30        }
    2931
    3032let with_kv x (k,v) =
     
    3840        | "date"                         -> { x with date = Date.{ x.date with created   = Date.of_string v }}
    3941        | "date-edited"-> { x with date = Date.{ x.date with edited             = Date.of_string v }}
    40         | "licences" | "topics" | "keywords" | "series" as k -> with_str_set x k v
     42        | "licences" | "topics" | "keywords" | "references" | "series" as k -> with_str_set x k v
    4143        | k -> { x with string_map = String_map.add k (trim v) x.string_map }
    4244
     
    7880                s "Topics"   (str_set "topics" x);
    7981                s "Keywords" (str_set "keywords" x);
     82                s "References"(str_set "references" x);
    8083                s "Series"   (str_set "series" x);
    8184                s "Abstract" (str "abstract" x);
Note: See TracChangeset for help on using the changeset viewer.