@@ -3,9 +3,10 @@ module BotPlutusInterface.UtxoParser (
33 feeParser ,
44 utxoParser ,
55 utxoMapParser ,
6+ tokenNameParser ,
67) where
78
8- import Control.Applicative (many )
9+ import Control.Applicative (many , (<|>) )
910import Control.Monad (mzero , void )
1011import Data.Aeson.Extras (tryDecode )
1112import Data.Attoparsec.Text (
@@ -22,11 +23,10 @@ import Data.Attoparsec.Text (
2223 skipSpace ,
2324 skipWhile ,
2425 takeWhile ,
26+ string ,
2527 (<?>) ,
2628 )
27- import Data.Hex (unhex )
2829import Data.Text (Text )
29- import Data.Text.Encoding (decodeUtf8 , encodeUtf8 )
3030import Ledger (Address (addressCredential ))
3131import Ledger.Ada qualified as Ada
3232import Ledger.Scripts (DatumHash (.. ))
@@ -35,12 +35,13 @@ import Ledger.Tx (
3535 TxOutRef (.. ),
3636 )
3737import Ledger.TxId (TxId (.. ))
38- import Ledger.Value (AssetClass , TokenName , Value )
38+ import Ledger.Value (AssetClass , Value )
3939import Ledger.Value qualified as Value
4040import Plutus.V1.Ledger.Api (
4141 BuiltinByteString ,
4242 Credential (PubKeyCredential , ScriptCredential ),
4343 CurrencySymbol (.. ),
44+ TokenName (.. ),
4445 )
4546import PlutusTx.Builtins (toBuiltin )
4647import Prelude hiding (takeWhile )
@@ -106,7 +107,8 @@ tokenNameParser = do
106107 where
107108 tokenName = do
108109 void $ char ' .'
109- Value. tokenName . encodeUtf8 <$> decodeHex (takeWhile (/= ' ' ))
110+ void $ (string " 0x" <|> string " " )
111+ TokenName <$> decodeHash (takeWhile (not . inClass " " ))
110112
111113datumHashNoneParser :: Parser ()
112114datumHashNoneParser = " TxOutDatumNone" >> pure ()
@@ -123,10 +125,6 @@ decodeHash :: Parser Text -> Parser BuiltinByteString
123125decodeHash rawParser =
124126 rawParser >>= \ parsed -> either (const mzero) (pure . toBuiltin) (tryDecode parsed)
125127
126- decodeHex :: Parser Text -> Parser Text
127- decodeHex rawParser =
128- rawParser >>= \ parsed -> either (const mzero) (pure . decodeUtf8) ((unhex . encodeUtf8) parsed)
129-
130128feeParser :: Parser Integer
131129feeParser =
132130 choice [prefixed, suffixed]
0 commit comments