diff options
Diffstat (limited to 'people.sxml')
-rw-r--r-- | people.sxml | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/people.sxml b/people.sxml new file mode 100644 index 0000000..e9ab88b --- /dev/null +++ b/people.sxml | |||
@@ -0,0 +1,49 @@ | |||
1 | (use-modules (srfi srfi-1)) | ||
2 | |||
3 | (include "projects.scm") | ||
4 | |||
5 | (define %members | ||
6 | ;; List of member/projects tuples. | ||
7 | (let ((table (make-hash-table eq? hashq))) | ||
8 | (hash-table-fold %projects | ||
9 | (lambda (key project lst) | ||
10 | (for-each (lambda (member) | ||
11 | (let ((projects (hash-table-ref/default | ||
12 | table member '()))) | ||
13 | (hash-table-set! table member | ||
14 | (cons project | ||
15 | projects)))) | ||
16 | (project-members project))) | ||
17 | '()) | ||
18 | (sort (delete-duplicates | ||
19 | (hash-table-fold table alist-cons '())) | ||
20 | (match-lambda* | ||
21 | (((member1 . _) (member2 . _)) | ||
22 | (string<? (person-name member1) | ||
23 | (person-name member2))))))) | ||
24 | |||
25 | `((title . "Software") | ||
26 | (author . "The GNU Assembly") | ||
27 | (date . ,(string->date* "2021-04-14 23:00")) | ||
28 | |||
29 | (content | ||
30 | ((h2 "People") | ||
31 | (p "The following maintainers and contributors participate in " | ||
32 | "the GNU Assembly and have endorsed the " | ||
33 | (a (@ (href "/en/documents/social-contract")) | ||
34 | "Social Contract") ":") | ||
35 | |||
36 | (ul ;; (@ (class "projects")) | ||
37 | ,@(map (match-lambda | ||
38 | ((person projects ...) | ||
39 | `(li (@ (class "person")) | ||
40 | ,(let ((home-page (person-url person))) | ||
41 | (if home-page | ||
42 | `(a (@ (href ,home-page)) | ||
43 | ,(person-name person)) | ||
44 | (person-name person))) | ||
45 | " (" | ||
46 | ,(string-join (map project-name projects) | ||
47 | ", ") | ||
48 | ")"))) | ||
49 | %members))))) | ||