~toastal/klossi
~toastal/klossi/ncl/folks.ncl
~toastal/klossi/ncl/folks.ncl
0 | { |
1 | Address = std.contract.from_predicate (std.string.is_match "^\\S+@\\S+\\.\\S+$"), |
2 | URI = std.contract.from_predicate (std.string.is_match "[a-zA-Z][a-zA-Z\\d+\\-.]*://\\S+"), |
3 | PGPLongKeyID = std.contract.from_predicate (std.string.is_match "\\w+/[a-fA-F0-9]{16}"), |
4 | PGPFingerPrint = std.contract.from_predicate (std.string.is_match "([a-fA-F0-9]{4} *){10}"), |
5 | PGPKey = { |
6 | long-key-id | PGPLongKeyID, |
7 | fingerprint | PGPFingerPrint, |
8 | }, |
9 | Someone = { |
10 | name |
11 | | std.string.NonEmpty, |
12 | aliases |
13 | | doc "Other names you may go by" |
14 | | std.array.NonEmpty |
15 | | optional, |
16 | email |
17 | | Address |
18 | | optional, |
19 | xmpp |
20 | | Address |
21 | | optional, |
22 | uri |
23 | | doc "Hyperlink to website" |
24 | | URI |
25 | | optional, |
26 | pronouns |
27 | | Array std.string.NonEmpty |
28 | | std.array.NonEmpty |
29 | | optional, |
30 | pgp_keys |
31 | | Array PGPKey |
32 | | std.array.NonEmpty |
33 | | optional, |
34 | }, |
35 | Folks = Array Someone, |
36 | } |