Skip to content

Commit

Permalink
Simplify code using Parsec
Browse files Browse the repository at this point in the history
  • Loading branch information
cblp committed Dec 3, 2021
1 parent 4818e0f commit 2f8a9a7
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
6 changes: 4 additions & 2 deletions cardano-api/src/Cardano/Api/TxBody.hs
Expand Up @@ -139,6 +139,7 @@ module Cardano.Api.TxBody (

import Prelude

import Control.Applicative (some)
import Control.Monad (guard)
import Data.Aeson (object, withObject, withText, (.:), (.:?), (.=))
import qualified Data.Aeson as Aeson
Expand Down Expand Up @@ -166,6 +167,7 @@ import qualified Data.Text as Text
import Data.Type.Equality (TestEquality (..), (:~:) (Refl))
import Data.Word (Word32, Word64)
import GHC.Generics
import Text.Parsec ((<?>))
import qualified Text.Parsec as Parsec
import qualified Text.Parsec.Language as Parsec
import qualified Text.Parsec.String as Parsec
Expand Down Expand Up @@ -403,7 +405,7 @@ instance FromJSON TxIn where

parseTxId :: Parsec.Parser TxId
parseTxId = do
str <- Parsec.many1 Parsec.hexDigit Parsec.<?> "transaction id (hexadecimal)"
str <- some Parsec.hexDigit <?> "transaction id (hexadecimal)"
hoistEitherWith ("Incorrect transaction id format: " ++) $
deserialiseFromRawBytesHex AsTxId $ BSC.pack str

Expand Down Expand Up @@ -1157,7 +1159,7 @@ pattern TxOutDatum s d <- TxOutDatum' s _ d

parseHashScriptData :: Parsec.Parser (Hash ScriptData)
parseHashScriptData = do
str <- Parsec.many1 Parsec.hexDigit Parsec.<?> "script data hash"
str <- some Parsec.hexDigit <?> "script data hash"
hoistEitherWith ("Invalid datum hash: " ++) $
deserialiseFromRawBytesHex (AsHash AsScriptData) $ BSC.pack str

Expand Down
5 changes: 3 additions & 2 deletions cardano-cli/src/Cardano/CLI/Shelley/Parsers.hs
Expand Up @@ -35,6 +35,7 @@ import Options.Applicative hiding (help, str)
import qualified Options.Applicative as Opt
import qualified Options.Applicative.Help as H
import Prettyprinter (line, pretty)
import Text.Parsec ((<?>))
import qualified Text.Parsec as Parsec
import qualified Text.Parsec.Error as Parsec
import qualified Text.Parsec.Language as Parsec
Expand Down Expand Up @@ -1879,7 +1880,7 @@ parseTxIn = TxIn <$> parseTxId <*> (Parsec.char '#' *> parseTxIx)

parseTxId :: Parsec.Parser TxId
parseTxId = do
str <- Parsec.many1 Parsec.hexDigit Parsec.<?> "transaction id (hexadecimal)"
str <- some Parsec.hexDigit <?> "transaction id (hexadecimal)"
case deserialiseFromRawBytesHex AsTxId (BSC.pack str) of
Right addr -> return addr
Left msg -> fail $ "Incorrect transaction id format: " ++ msg
Expand Down Expand Up @@ -2688,7 +2689,7 @@ pExtraEntropy =
parseEntropyBytes :: Parsec.Parser ByteString
parseEntropyBytes = either fail return
. B16.decode . BSC.pack
=<< Parsec.many1 Parsec.hexDigit
=<< some Parsec.hexDigit

pUTxOCostPerWord :: Parser Lovelace
pUTxOCostPerWord =
Expand Down

0 comments on commit 2f8a9a7

Please sign in to comment.