diff options
Diffstat (limited to 'users/Profpatsch/netencode/netencode.nix')
-rw-r--r-- | users/Profpatsch/netencode/netencode.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/users/Profpatsch/netencode/netencode.nix b/users/Profpatsch/netencode/netencode.nix new file mode 100644 index 000000000000..6bb2fa002796 --- /dev/null +++ b/users/Profpatsch/netencode/netencode.nix @@ -0,0 +1,49 @@ +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 (kv: tag kv.key kv.val) lokv)); + + list = l: netstring "[" "]" (concatStrings l); + +in { + inherit + unit + n1 + n3 + n6 + n7 + i3 + i6 + i7 + text + binary + tag + record + list + ; +} |