mfmts-1.0.0.0: multibase/MultiFormats/MultiBaseSystems.hs
-- | Module : MultiFormats.MultiBaseSystems
-- Description : Provides default instances of multibase
-- Copyright : Zoey McBride (c) 2026
-- License : AGPL-3.0-or-later
-- Maintainer : zoeymcbride@mailbox.org
-- Stability : experimental
module MultiFormats.MultiBaseSystems
( base2,
base10,
base16lower,
base16upper,
base32lower,
base32lowerNP,
base32upper,
base32upperNP,
base32hexlower,
base32hexlowerNP,
base32hexupper,
base32hexupperNP,
base58btc,
base64,
base64NP,
base64url,
base64urlNP,
)
where
import Data.Maybe (fromJust)
import MultiFormats.MultiBase
-- | Unwraps Maybe from multibaseSystems lookup for implementing MultiBase from
-- Char.
multibasePrefix :: Char -> MultiBase
multibasePrefix = fromJust . resolvePrefix
-- | Binary has prefix '0'.
base2 :: MultiBase
base2 = multibasePrefix '0'
-- | Decimal has prefix '9'.
base10 :: MultiBase
base10 = multibasePrefix '9'
-- | Hex-lower has prefix 'f'.
base16lower :: MultiBase
base16lower = multibasePrefix 'f'
-- | Hex-upper has prefix 'F'.
base16upper :: MultiBase
base16upper = multibasePrefix 'F'
-- | base32lower (no pad) has prefix 'b'.
base32lowerNP :: MultiBase
base32lowerNP = multibasePrefix 'b'
-- | base32uppper (no pad) has prefix 'B'.
base32upperNP :: MultiBase
base32upperNP = multibasePrefix 'B'
-- | base32lower (with pad) has prefix 'c'.
base32lower :: MultiBase
base32lower = multibasePrefix 'c'
-- | base32upper (with pad) has prefix 'C'.
base32upper :: MultiBase
base32upper = multibasePrefix 'C'
-- | Hex-base32lower (no pad) has prefix 'v'.
base32hexlowerNP :: MultiBase
base32hexlowerNP = multibasePrefix 'v'
-- | Hex-base32upper (no pad) has prefix 'V'.
base32hexupperNP :: MultiBase
base32hexupperNP = multibasePrefix 'V'
-- | Hex-base32lower (with pad) has prefix 't'.
base32hexlower :: MultiBase
base32hexlower = multibasePrefix 't'
-- | Hex-base32upper (with pad) has prefix 'T'.
base32hexupper :: MultiBase
base32hexupper = multibasePrefix 'T'
-- | Bitcoin base58 has prefix 'z'.
base58btc :: MultiBase
base58btc = multibasePrefix 'z'
-- | base64 (no pad) has prefix 'm'.
base64NP :: MultiBase
base64NP = multibasePrefix 'm'
-- | base64 (with pad) has prefix 'M'.
base64 :: MultiBase
base64 = multibasePrefix 'M'
-- | base64url (no pad) has prefix 'u'.
base64urlNP :: MultiBase
base64urlNP = multibasePrefix 'u'
-- | base64url (with pad) has prefix 'U'.
base64url :: MultiBase
base64url = multibasePrefix 'U'