mfmts-1.2.0.0: multibase/MultiFormats/MultiBase.hs
-- | Module : MultiFormats.MultiBase
-- Description : Multibase encoders and decoders for ShortByteString
-- Copyright : Zoey McBride (c) 2026
-- License : AGPL-3.0-or-later
-- Maintainer : zoeymcbride@mailbox.org
-- Stability : experimental
module MultiFormats.MultiBase
( BaseSystem (encoder, decoder),
Encoder,
Decoder,
ByteStr,
)
where
import Data.BaseSystems.DigitTranscoder qualified as DXC
import Data.ByteString.Short (ShortByteString)
import Data.Text (Text)
import MultiFormats.MultiBase.DigitTranscoder (MultiBase)
-- | Sets the bytestring type to use in this file.
type ByteStr = ShortByteString
-- | Alias for curried encoder method.
type Encoder = ByteStr -> Text
-- | Alias for curried decoder method.
type Decoder = Text -> Maybe ByteStr
-- | Configures the BaseSystem for this file's ByteType.
class BaseSystem a where
encoder :: a -> ByteStr -> Text
decoder :: a -> Text -> Maybe ByteStr
-- | Demotes the DigitTranscoder for MultiBase to BaseSystem transcoders.
instance BaseSystem (MultiBase ByteStr) where
encoder = DXC.digitEncoder
decoder = DXC.digitDecoder