blob: ed2005a08b40658070f15f12a265b38f53022be1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
{
html,
data,
lib,
...
}:
let
matchFirst =
regexp: str:
let
results = builtins.match regexp str;
in
if results == null then null else builtins.head results;
join =
url: name:
with html;
lib.optionalString (url != null) " · ${href url "${icon "las la-paperclip"} ${name}"}";
talks = data.research.talks;
in
with html;
dl (
for (sort.reverse.byPath [ "issued" "date-parts" ] talks) (
item:
with item;
let
date-parts = builtins.head issued.date-parts;
date = {
year = builtins.elemAt date-parts 0;
month = builtins.elemAt date-parts 1;
day = builtins.elemAt date-parts 2;
};
extra = if item ? note then note else "";
abstractURL = matchFirst ".*abstract: ([^\n ]*).*" extra;
slidesURL = matchFirst ".*slides: ([^\n ]*).*" extra;
# broken because of tabs
# paperURL = let
# paperId = matchFirst "([A-z0-9]*[0-9]{4})[a-z]" id;
# in
# if paperId == null
# then null
# else "#Writings#${paperId}";
in
[
(dt [
((if abstractURL == null then (x: x) else href abstractURL) (em title))
])
(dd [
(with (makeDate date); tag pretty)
"@ ${href url event-title}, ${publisher-place}"
(join slidesURL "slides")
# broken because of tabs
# (join paperURL "paper")
(details [
(summary "More")
(dl (
lib.optionals (item ? abstract) [
(dt "Abstract.")
(dd (blockquote abstract))
]
++ [
(dt "Cite.")
(
let
citeWith =
title: type:
details [
(summary title)
(pre (code (lib.readFile "${data.files}/biblio/${type}/${id}")))
];
in
dd [
(citeWith "BibLaTeX" "biblatex")
(citeWith "BibTeX" "bibtex")
(citeWith "CSL JSON" "csljson")
]
)
]
))
])
])
]
)
)
|