add checkboxes

This commit is contained in:
tristan 2024-01-01 20:27:05 +00:00
parent c29ff7b22e
commit 4f28cbfda7
5 changed files with 60 additions and 35 deletions

View file

@ -69,13 +69,25 @@ in rec {
matchThen "(```)(.*)(```)" block (m: elems.code (builtins.elemAt m 1));
list = block:
matchThen (let item = "- .+";
in ''
(${item}
)*(${item}
matchThen (
''
(- .+
)*(- .+
?)'') block (m:
elems.List (builtins.filter (s: builtins.isString s && s != "")
(builtins.split "[:blank:]*- " block)));
elems.List ( splitList block ));
splitList = block: map (listItem) (builtins.filter
(s: builtins.isString s && s != "")
(builtins.split "\n" block));
listItem = str:
let
li = builtins.match "- (.*)" str;
checkbox = builtins.match "- \\[(.)] (.*)" str;
checked = builtins.elemAt checkbox 0;
content = builtins.elemAt checkbox 1;
in if checkbox == null then li else
[(elems.input {type = "checkbox"; checked = checked != " "; disabled = true;}) content];
replace = matcher: apply: block:
(let