blob: 1a2688b58aa78dff8b352285108eb6633205b80b (
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
|
{ html, data, lib, ... }:
let
publications = data.publications;
attrValsOpt = attrs: attrSet:
lib.attrVals (builtins.filter (attr: lib.hasAttr attr attrSet) attrs)
attrSet;
concatStringsPrefix = prefix: strings:
lib.concatStrings (builtins.map (string: prefix + string) strings);
concatStringsSuffix = suffix: strings:
lib.concatStrings (builtins.map (string: string + suffix) strings);
format = publication:
with html;
with publication;
{
inherit id title url year abstract cite;
} // (let
authorsOther = lib.remove data.basics.name
(builtins.map (author: "${author.given} ${author.family}") author);
in lib.optionalAttrs (authorsOther != [ ]) {
authors = "With ${lib.concatStringsSep ", " authorsOther}";
}) // lib.optionalAttrs (publication ? container-title) {
published = "In ${em container-title}" + concatStringsPrefix ", "
(attrValsOpt [ "volume" "issue" "publisher" ] publication);
} // lib.optionalAttrs (publication ? ISBN) {
isbn = "${small "ISBN"}: ${ISBN}";
} // lib.optionalAttrs (publication ? ISSN) {
issn = "${small "ISSN"}: ${ISSN}";
} // lib.optionalAttrs (publication ? DOI) {
doi = "${small "DOI"}: ${href "https://doi.org/${DOI}" (code DOI)}";
};
in {
title = "Publications";
priority = 10;
body = with html;
dl (for (sort.reverse.byPath [ "issued" "date-parts" ] publications)
(publication:
let formatted = format publication;
in with formatted;
lines [
(dt { id = "Publications#${id}"; }
"${href { target = "_blank"; } url title} (${year})")
(dd [
(concatStringsSuffix ". "
(attrValsOpt [ "authors" "published" "isbn" "issn" "doi" ]
formatted))
(details [
(summary "More")
(dl [
(dt "Abstract.")
(dd (blockquote abstract))
(dt "Cite.")
(let
citeWith = title: attr:
details [
(summary title)
(pre (code (lib.getAttr attr cite)))
];
in dd [
(citeWith "BibLaTeX" "biblatex")
(citeWith "BibTeX" "bibtex")
(citeWith "CSL JSON" "csljson")
])
])
])
])
]));
}
|