summaryrefslogtreecommitdiffstats
path: root/people.sxml
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-04-14 23:17:37 +0200
committerLudovic Courtès <ludo@gnu.org>2021-04-14 23:39:24 +0200
commit09e3c8bff91e9af7dbce3ecc7e585e1df7c0c0ae (patch)
tree57dc825895961255b3c76fb1aba9cd2ba67fbf86 /people.sxml
parentsoftware: Guarantee person pointer identity (!). (diff)
Add /people.
* projects.scm: New file, with code formerly... * software.sxml: ... here. Include it. * people.sxml: New file. * haunt.scm (static-pages): Add it. * posts/kickoff.md, index.md: Refer to it.
Diffstat (limited to 'people.sxml')
-rw-r--r--people.sxml49
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)))))