component extending, add all html elems

also use nixfmt
This commit is contained in:
tristan 2023-12-31 21:33:42 +00:00
parent ccc6b53b91
commit cb6d9652f8
15 changed files with 548 additions and 604 deletions

View file

@ -1,27 +1,30 @@
let
keyvalue = key: value:
keyvalue = key: value:
assert builtins.isString key;
if value == "" || value == [] || value == {} then "" else
''${key}="${toString value}"'';
if value == "" || value == [ ] || value == { } then
""
else
''${key}="${toString value}"'';
in rec {
toHTML = elem:
if builtins.typeOf elem == "string"
then elem
else if builtins.typeOf elem == "list"
then builtins.toString (map toHTML elem)
else ''<${elem.tag} ${writeAttrs elem.attrs}>${toHTML elem.child}</${elem.tag}>'';
if builtins.typeOf elem == "string" then
elem
else if builtins.typeOf elem == "list" then
builtins.toString (map toHTML elem)
else
"<${elem.tag} ${writeAttrs elem.attrs}>${
toHTML elem.child
}</${elem.tag}>";
writeAttrs = attrs:
toString (builtins.filter (value: value != "") (builtins.attrValues (
builtins.mapAttrs (key: value:
if (builtins.isPath value)
then keyvalue key (baseNameOf value)
toString (builtins.filter (value: value != "") (builtins.attrValues
(builtins.mapAttrs (key: value:
if (builtins.isPath value) then
keyvalue key (baseNameOf value)
else if (builtins.substring 0 2 key) == "__" then
""
else
if (builtins.substring 0 2 key) == "__"
then ""
else keyvalue key value)
attrs
)));
keyvalue key value) attrs)));
tag = tag: attrs: child: {
inherit tag attrs child;
@ -29,20 +32,9 @@ in rec {
};
addToHead = page: heads:
page
// {
child =
map
(
e:
if e.tag == "head"
then
e
// {
child = e.child ++ heads;
}
else e
)
page // {
child = map
(e: if e.tag == "head" then e // { child = e.child ++ heads; } else e)
page.child;
};
}