packages feed

hash-addressed-cli-2.0.0.0: library/HashAddressed/App/HashFunction/Naming.hs

module HashAddressed.App.HashFunction.Naming
  (
    readHashFunctionText,
    readHashFunctionString,
    showHashFunction,
    normalizeHashFunction,
    hashFunctions,
  )
  where

import Essentials

import Data.Bool (not)
import HashAddressed.HashFunction (HashFunction (SHA_256))
import Prelude (String)

import qualified Data.Char as Char
import qualified Data.List as List
import qualified Data.Text as Strict
import qualified Data.Text as Strict.Text

hashFunctions :: [(String, HashFunction)]
hashFunctions = [(showHashFunction SHA_256, SHA_256)]

readHashFunctionText :: Strict.Text -> Maybe HashFunction
readHashFunctionText = Strict.Text.unpack >>> readHashFunctionString

readHashFunctionString :: String -> Maybe HashFunction
readHashFunctionString x = List.lookup x hashFunctions

showHashFunction :: HashFunction -> String
showHashFunction = \case
    SHA_256 -> "sha256"

normalizeHashFunction :: String -> String
normalizeHashFunction =
    List.map Char.toLower . List.filter (\x -> not (List.elem x " -_"))