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 | |
---|
1 | module 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 }
|
---|
16 | end
|
---|
17 |
|
---|
18 | include Person
|
---|
19 |
|
---|
20 | module 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
|
---|
31 | end
|
---|
Note:
See
TracBrowser
for help on using the repository browser.