Current derivation
This commit is contained in:
parent
0aae761f89
commit
f7226d5fa6
20 changed files with 342 additions and 79 deletions
98
extralib.nix
Normal file
98
extralib.nix
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
{ lib ? (import <nixpkgs> {}).lib, ... }:
|
||||
with lib;
|
||||
with builtins;
|
||||
{
|
||||
lib = {
|
||||
floats = rec {
|
||||
_floatComponents = f: lib.strings.splitString "." (toString f);
|
||||
|
||||
ceil = f:
|
||||
let
|
||||
comp = _floatComponents f;
|
||||
int = strings.toInt (head comp);
|
||||
inc = if match "[1-9][[:digit:]]*" (head (tail comp)) != null then 1 else 0;
|
||||
in
|
||||
assert(isFloat f);
|
||||
int + inc;
|
||||
|
||||
floor = f:
|
||||
let
|
||||
int = strings.toInt (head (_floatComponents f));
|
||||
in
|
||||
assert(isFloat f);
|
||||
int;
|
||||
|
||||
toInt = f:
|
||||
let
|
||||
comp = _floatComponents f;
|
||||
int = strings.toInt (head comp);
|
||||
inc = if match "[5-9][[:digit:]]*" (head (tail comp)) != null then 1 else 0;
|
||||
in
|
||||
assert(isFloat f);
|
||||
int + inc;
|
||||
};
|
||||
|
||||
hex = rec {
|
||||
parseDigit = c:
|
||||
let
|
||||
v = strings.toUpper c;
|
||||
in
|
||||
assert(match "[0-9A-F]" c != null);
|
||||
{
|
||||
"0" = 0;
|
||||
"1" = 1;
|
||||
"2" = 2;
|
||||
"3" = 3;
|
||||
"4" = 4;
|
||||
"5" = 5;
|
||||
"6" = 6;
|
||||
"7" = 7;
|
||||
"8" = 8;
|
||||
"9" = 9;
|
||||
"A" = 10;
|
||||
"B" = 11;
|
||||
"C" = 12;
|
||||
"D" = 13;
|
||||
"E" = 14;
|
||||
"F" = 15;
|
||||
}."${v}";
|
||||
|
||||
toDec = s:
|
||||
let characters = stringToCharacters s;
|
||||
values = map parseDigit characters;
|
||||
value = foldl (acc: n: acc * 16 + n) 0 values;
|
||||
in value;
|
||||
|
||||
fromDec = trivial.toHexString;
|
||||
|
||||
};
|
||||
|
||||
# colors = rec {
|
||||
|
||||
|
||||
|
||||
# colorFromHex = s:
|
||||
# let rgba = match "#([[:xdigit:]]{2})([[:xdigit:]]{2})([[:xdigit:]]{2})([[:xdigit:]]{2})" s;
|
||||
# rgb = match "#([[:xdigit:]]{2})([[:xdigit:]]{2})([[:xdigit:]]{2})" s;
|
||||
# values = map hexToDec (if isNull rgb then rgba else rgb ++ [ "FF" ]);
|
||||
# in {
|
||||
# r = (head values) / 255.0;
|
||||
# g = (head (tail values)) / 255.0;
|
||||
# b = (head (drop 2 values)) / 255.0;
|
||||
# a = (last values) / 255.0;
|
||||
# };
|
||||
|
||||
# red = { r = 255.0; g = 0.0; b = 0.0; };
|
||||
# green = { r = 0.0; g = 255.0; b = 0.0; };
|
||||
# blue = { r = 0.0; g = 0.0; b = 255.0; };
|
||||
|
||||
# toRGBHex = { r, g, b, ... }:
|
||||
# ''#${concatMapStrings (v: fixedWidthString 2 "0" (toHexString (v * 255))) [ r g b ]}'';
|
||||
# toRGBAHex = { r, g, b, a }:
|
||||
# ''#${concatMapStrings (v: fixedWidthString 2 "0" (toHexString v)) [ r g b a ]}'';
|
||||
|
||||
# toRgbHex = c: strings.toLower (toRGBHex c);
|
||||
# toRgbaHex = c: strings.toLower (toRGBAHex c);
|
||||
# };
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue