From fe4f1d1ae9febbf03d84aed4b491f5b6ee3cc082 Mon Sep 17 00:00:00 2001 From: Gabriel Arazas <foodogsquared@foodogsquared.one> Date: Sat, 24 Feb 2024 21:34:03 +0800 Subject: [PATCH] bahaghari/lib: init `isHexString` --- subprojects/bahaghari/lib/default.nix | 2 +- subprojects/bahaghari/lib/hex.nix | 17 +++++++++++++++++ subprojects/bahaghari/tests/lib/hex.nix | 10 ++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) 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; + }; }