component extending, add all html elems
also use nixfmt
This commit is contained in:
parent
ccc6b53b91
commit
cb6d9652f8
15 changed files with 548 additions and 604 deletions
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue