@@ -31,7 +31,6 @@ module Cardano.Api.Internal.Address
3131
3232 -- ** Addresses in any era
3333 , AddressAny (.. )
34- , lexPlausibleAddressString
3534 , parseAddressAny
3635
3736 -- ** Addresses in specific eras
@@ -101,6 +100,7 @@ import Cardano.Api.Internal.Script
101100import Cardano.Api.Internal.SerialiseBech32
102101import Cardano.Api.Internal.SerialiseRaw
103102import Cardano.Api.Internal.Utils
103+ import Cardano.Api.Parser.Text qualified as P
104104
105105import Cardano.Chain.Common qualified as Byron
106106import Cardano.Ledger.Address qualified as Shelley
@@ -120,8 +120,6 @@ import Data.Either.Combinators (rightToMaybe)
120120import Data.Text (Text )
121121import Data.Text qualified as Text
122122import Data.Text.Encoding qualified as Text
123- import Text.Parsec qualified as Parsec
124- import Text.Parsec.String qualified as Parsec
125123
126124-- ----------------------------------------------------------------------------
127125-- Address Serialisation
@@ -248,10 +246,10 @@ instance SerialiseAsRawBytes (Address ShelleyAddr) where
248246 Just (Shelley. Addr nw pc scr) -> Right (ShelleyAddress nw pc scr)
249247
250248instance SerialiseAsBech32 (Address ShelleyAddr ) where
251- bech32PrefixFor (ShelleyAddress Shelley. Mainnet _ _) = " addr"
252- bech32PrefixFor (ShelleyAddress Shelley. Testnet _ _) = " addr_test"
249+ bech32PrefixFor (ShelleyAddress Shelley. Mainnet _ _) = unsafeHumanReadablePartFromText " addr"
250+ bech32PrefixFor (ShelleyAddress Shelley. Testnet _ _) = unsafeHumanReadablePartFromText " addr_test"
253251
254- bech32PrefixesPermitted (AsAddress AsShelleyAddr ) = [" addr" , " addr_test" ]
252+ bech32PrefixesPermitted (AsAddress AsShelleyAddr ) = unsafeHumanReadablePartFromText <$> [" addr" , " addr_test" ]
255253
256254instance SerialiseAddress (Address ByronAddr ) where
257255 serialiseAddress addr@ ByronAddress {} =
@@ -381,20 +379,20 @@ instance IsShelleyBasedEra era => FromJSON (AddressInEra era) where
381379 parseJSON =
382380 let sbe = shelleyBasedEra @ era
383381 in withText " AddressInEra" $ \ txt -> do
384- addressAny <- runParsecParser parseAddressAny txt
382+ addressAny <- P. runParserFail parseAddressAny txt
385383 pure $ anyAddressInShelleyBasedEra sbe addressAny
386384
387- parseAddressAny :: SerialiseAddress addr => Parsec. Parser addr
385+ -- | Parser for any address, supports both bech32 and base58 encodings
386+ parseAddressAny :: SerialiseAddress addr => P. Parser addr
388387parseAddressAny = do
389388 str <- lexPlausibleAddressString
390389 case deserialiseAddress asType str of
391390 Nothing -> fail $ " invalid address: " <> Text. unpack str
392391 Just addr -> pure addr
393-
394- lexPlausibleAddressString :: Parsec. Parser Text
395- lexPlausibleAddressString =
396- Text. pack <$> Parsec. many1 (Parsec. satisfy isPlausibleAddressChar)
397392 where
393+ lexPlausibleAddressString :: P. Parser Text
394+ lexPlausibleAddressString =
395+ Text. pack <$> P. many1 (P. satisfy isPlausibleAddressChar)
398396 -- Covers both base58 and bech32 (with constrained prefixes)
399397 isPlausibleAddressChar c =
400398 isAsciiLower c
@@ -579,10 +577,10 @@ instance SerialiseAsRawBytes StakeAddress where
579577 Just (Shelley. RewardAccount nw sc) -> Right (StakeAddress nw sc)
580578
581579instance SerialiseAsBech32 StakeAddress where
582- bech32PrefixFor (StakeAddress Shelley. Mainnet _) = " stake"
583- bech32PrefixFor (StakeAddress Shelley. Testnet _) = " stake_test"
580+ bech32PrefixFor (StakeAddress Shelley. Mainnet _) = unsafeHumanReadablePartFromText " stake"
581+ bech32PrefixFor (StakeAddress Shelley. Testnet _) = unsafeHumanReadablePartFromText " stake_test"
584582
585- bech32PrefixesPermitted AsStakeAddress = [" stake" , " stake_test" ]
583+ bech32PrefixesPermitted AsStakeAddress = unsafeHumanReadablePartFromText <$> [" stake" , " stake_test" ]
586584
587585instance SerialiseAddress StakeAddress where
588586 serialiseAddress addr@ StakeAddress {} =
0 commit comments