(use-modules (srfi srfi-1)) (include "projects.scm") (define %members ;; List of member/projects tuples. (let ((table (make-hash-table eq? hashq))) (hash-table-fold %projects (lambda (key project lst) (for-each (lambda (member) (let ((projects (hash-table-ref/default table member '()))) (hash-table-set! table member (cons project projects)))) (project-members project))) '()) (sort (delete-duplicates (hash-table-fold table alist-cons '())) (match-lambda* (((member1 . _) (member2 . _)) (stringdate* "2021-04-14 23:00")) (content ((h2 "People") (p "The following maintainers and contributors endorsed the " (a (@ (href "/en/documents/social-contract")) "Social Contract") " and may participate in the GNU Assembly:") (ul ;; (@ (class "projects")) ,@(map (match-lambda ((person projects ...) `(li (@ (class "person")) ,(let ((home-page (person-url person))) (if home-page `(a (@ (href ,home-page)) ,(person-name person)) (person-name person))) " (" ,(string-join (map project-name projects) ", ") ")"))) %members)))))