chore(users/Profpatsch/netencode): netencode.nix -> gen.nix
Change-Id: I7ccbfe863fbff65015caa8c740b80c4bb5c59dc1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2446 Reviewed-by: Profpatsch <mail@profpatsch.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
b725e9b7e4
commit
f68781da1b
2 changed files with 2 additions and 2 deletions
65
users/Profpatsch/netencode/gen.nix
Normal file
65
users/Profpatsch/netencode/gen.nix
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
{ lib }:
|
||||
let
|
||||
|
||||
netstring = tag: suffix: s:
|
||||
"${tag}${toString (builtins.stringLength s)}:${s}${suffix}";
|
||||
|
||||
unit = "u,";
|
||||
|
||||
n1 = b: if b then "n1:1," else "n1:0,";
|
||||
|
||||
n = i: n: netstring "n${toString i}" "," (toString n);
|
||||
i = i: n: netstring "i${toString i}" "," (toString n);
|
||||
|
||||
n3 = n 3;
|
||||
n6 = n 6;
|
||||
n7 = n 7;
|
||||
|
||||
i3 = i 3;
|
||||
i6 = i 6;
|
||||
i7 = i 7;
|
||||
|
||||
text = netstring "t" ",";
|
||||
binary = netstring "b" ",";
|
||||
|
||||
tag = key: val: netstring "<" "|" key + val;
|
||||
|
||||
concatStrings = builtins.concatStringsSep "";
|
||||
|
||||
record = lokv: netstring "{" "}"
|
||||
(concatStrings (map ({key, val}: tag key val) lokv));
|
||||
|
||||
list = l: netstring "[" "]" (concatStrings l);
|
||||
|
||||
dwim = val:
|
||||
let match = {
|
||||
"bool" = n1;
|
||||
"int" = i6;
|
||||
"string" = text;
|
||||
"set" = attrs: record (lib.mapAttrsToList
|
||||
(k: v: {
|
||||
key = k;
|
||||
val = dwim v;
|
||||
}) attrs);
|
||||
"list" = l: list (map dwim l);
|
||||
};
|
||||
in match.${builtins.typeOf val} val;
|
||||
|
||||
in {
|
||||
inherit
|
||||
unit
|
||||
n1
|
||||
n3
|
||||
n6
|
||||
n7
|
||||
i3
|
||||
i6
|
||||
i7
|
||||
text
|
||||
binary
|
||||
tag
|
||||
record
|
||||
list
|
||||
dwim
|
||||
;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue