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))))) | ||