diff --git a/subprojects/bahaghari/lib/default.nix b/subprojects/bahaghari/lib/default.nix index 88fa343d..ae0f4458 100644 --- a/subprojects/bahaghari/lib/default.nix +++ b/subprojects/bahaghari/lib/default.nix @@ -21,5 +21,5 @@ pkgs.lib.makeExtensible tinted-theming = callLibs ./tinted-theming.nix; inherit (self.trivial) importYAML toYAML toBaseDigitsWithGlyphs generateGlyphSet; - inherit (self.hex) toHexString; + inherit (self.hex) toHexString isHexString; }) diff --git a/subprojects/bahaghari/lib/hex.nix b/subprojects/bahaghari/lib/hex.nix index 499b4883..8a6b071b 100644 --- a/subprojects/bahaghari/lib/hex.nix +++ b/subprojects/bahaghari/lib/hex.nix @@ -14,4 +14,21 @@ rec { range 15 18 => [ "F" "10" "11" ] */ range = first: last: builtins.map (n: toHexString n) (pkgs.lib.lists.range first last); + + /* Checks if the given hex string is valid or not. + + Type: isHexString :: String -> Bool + + Example: + isHexString "ABC" + => true + + isHexString "00ABC" + => true + + isHexString "WHAT! HELL NO!" + => false + */ + isHexString = hex: + builtins.match "[A-Fa-f0-9]+" hex != null; } diff --git a/subprojects/bahaghari/tests/lib/hex.nix b/subprojects/bahaghari/tests/lib/hex.nix index fe8d2d8a..30300471 100644 --- a/subprojects/bahaghari/tests/lib/hex.nix +++ b/subprojects/bahaghari/tests/lib/hex.nix @@ -27,4 +27,14 @@ pkgs.lib.runTests { expr = lib.hex.range 49 17; expected = [ ]; }; + + testIsHexString = { + expr = lib.hex.isHexString "ABC"; + expected = true; + }; + + testIsHexStringWithInvalidHex = { + expr = lib.hex.isHexString "WHAT IS THIS"; + expected = false; + }; }