source: code/trunk/lib/person.ml@ 2

Last change on this file since 2 was 2, checked in by fox, 3 years ago

Samhain 21

Converter

  • type selection
  • subdir conversion
  • htm extension

Gemini

  • index.gmi
  • topics and latest
  • gmi.atom feed

Add pull (http(s)) operation

  • peers.pub.conf and peers.priv.conf

HTML5 format & fixes by Novaburst
Phony target (thanks Gergely)

May

Basic unit renamed from Note to Text.
New modular text-parser, internal to Logarion, for generic notation parsing. The default input format is now a much plainer text.
Logarion created texts have part of the UUID in filename.
Logarion's index re-written in Messagepack format. Removed indices command. They are generated during convert.

File size: 1.2 KB
Line 
1module Person = struct
2 type name_t = string
3 type address_t = Uri.t
4 type t = { name: name_t; addresses: address_t list }
5 let empty = { name = ""; addresses = [] }
6 let compare = Stdlib.compare
7 let to_string p = List.fold_left (fun a e -> a^" <"^Uri.to_string e^">") p.name p.addresses
8 let of_string s = match String.trim s with "" -> empty | s ->
9 match Re.Str.(split (regexp " *< *") s) with
10 | [] -> empty
11 | [n] -> let name = String.trim n in { empty with name }
12 | n::adds ->
13 let name = String.trim n in
14 let addresses = List.map (fun f -> Uri.of_string @@ String.(sub f 0 (length f -1))) adds in
15 { name; addresses }
16end
17
18include Person
19
20module Set = struct
21 include Set.Make(Person)
22 let to_string ?(pre="") ?(sep=", ") s =
23 let str = Person.to_string in
24 let j x a = match a, x with "",_ -> str x | _,x when x = Person.empty -> a | _ -> a^sep^str x in
25 fold j s pre
26 let of_string s = of_list (List.map Person.of_string (String_set.list_of_csv s))
27
28 let of_stringset s = String_set.fold (fun e a -> union (of_string e) a) s empty
29 let of_query q = of_stringset (fst q), of_stringset (snd q)
30 let predicate (inc, exl) set = not (disjoint inc set) && disjoint exl set
31end
Note: See TracBrowser for help on using the repository browser.