11import yaml
22import sys
3+ import re
4+
5+ def slugify (text ):
6+ text = str (text ).lower ().strip ()
7+ text = re .sub (r'\s+' , '-' , text )
8+ text = re .sub (r'[^\w\-]+' , '' , text )
9+ return re .sub (r'\-\-+' , '-' , text )
310
411def generate_table ():
512 with open ('src/data/lessons.yml' , 'r' ) as f :
613 data = yaml .safe_load (f )
714
815 # Table Header
9- markdown = "| Lesson | Status | Links |\n "
10- markdown += "| :--- | :--- | :--- |\n "
16+ markdown = "| Lesson | Authors | Status | Links |\n "
17+ markdown += "| :--- | :--- | :--- | :--- | \n "
1118
1219 for lesson in data ['lessons' ]:
1320 # Skip external resources if you only want your curriculum
@@ -17,6 +24,16 @@ def generate_table():
1724 name = lesson ['name' ]
1825 status = lesson .get ('status' , 'Unknown' )
1926
27+ # Build Author Links
28+ authors = lesson .get ('authors' , [])
29+ author_links = []
30+ if authors :
31+ for author in authors :
32+ slug = slugify (author )
33+ link = f"[{ author } ](https://ucla-imls-open-sci.info/authors/{ slug } )"
34+ author_links .append (link )
35+ author_str = ", " .join (author_links )
36+
2037 # Build Links
2138 links = []
2239 if lesson .get ('url' ):
@@ -35,7 +52,7 @@ def generate_table():
3552 elif 'pre' in status .lower ():
3653 status_badge = f"⚪ { status } "
3754
38- markdown += f"| { name } | { status_badge } | { link_str } |\n "
55+ markdown += f"| { name } | { author_str } | { status_badge } | { link_str } |\n "
3956
4057 return markdown
4158
0 commit comments