From 1a6de852fce0fd07510e81f8b9b3984abd44da6b Mon Sep 17 00:00:00 2001 From: zeme-iohk Date: Sat, 24 Sep 2022 12:32:20 +0200 Subject: [PATCH] Replace `PyF` with `string-interpolate` (#4862) Replaced `PyF` with `string-interpolate` (#4862) --- plutus-ledger-api/plutus-ledger-api.cabal | 8 +++--- .../PlutusLedgerApi/Test/EvaluationEvent.hs | 19 +++++++------ .../app/GeneratePluginOptionsDoc.hs | 27 +++++++++---------- plutus-tx-plugin/plutus-tx-plugin.cabal | 12 ++++----- plutus-tx-plugin/src/PlutusTx/Options.hs | 23 ++++++++-------- 5 files changed, 42 insertions(+), 47 deletions(-) diff --git a/plutus-ledger-api/plutus-ledger-api.cabal b/plutus-ledger-api/plutus-ledger-api.cabal index 0a7f45afec3..541e61d085b 100644 --- a/plutus-ledger-api/plutus-ledger-api.cabal +++ b/plutus-ledger-api/plutus-ledger-api.cabal @@ -114,15 +114,15 @@ library plutus-ledger-api-testlib PlutusLedgerApi.Test.Scripts build-depends: - , base >=4.9 && <5 + , base >=4.9 && <5 , base64-bytestring , bytestring - , plutus-core ^>=1.0 + , plutus-core ^>=1.0 , plutus-ledger-api - , plutus-tx ^>=1.0 + , plutus-tx ^>=1.0 , prettyprinter - , PyF , serialise + , string-interpolate , text test-suite plutus-ledger-api-test diff --git a/plutus-ledger-api/testlib/PlutusLedgerApi/Test/EvaluationEvent.hs b/plutus-ledger-api/testlib/PlutusLedgerApi/Test/EvaluationEvent.hs index 34cedb8b40e..f4b30a0dec1 100644 --- a/plutus-ledger-api/testlib/PlutusLedgerApi/Test/EvaluationEvent.hs +++ b/plutus-ledger-api/testlib/PlutusLedgerApi/Test/EvaluationEvent.hs @@ -27,10 +27,11 @@ import Codec.Serialise (Serialise (..)) import Data.ByteString.Base64 qualified as Base64 import Data.ByteString.Short qualified as BS import Data.List.NonEmpty (NonEmpty, toList) +import Data.String.Interpolate (__i) import Data.Text.Encoding qualified as Text import GHC.Generics (Generic) import Prettyprinter -import PyF (fmt) + data ScriptEvaluationResult = ScriptEvaluationSuccess | ScriptEvaluationFailure deriving stock (Show, Generic) @@ -143,17 +144,15 @@ data TestFailure renderTestFailure :: TestFailure -> String renderTestFailure = \case InvalidResult err -> display err - MissingCostParametersFor ver -> - [fmt| -Missing cost parameters for {show ver}. Report this as a bug -against the script dumper in plutus-apps." -|] + MissingCostParametersFor ver -> [__i| + Missing cost parameters for #{show ver}. + Report this as a bug against the script dumper in plutus-apps. + |] renderTestFailures :: NonEmpty TestFailure -> String -renderTestFailures xs = - [fmt| -Number of failed test cases: {length xs} -{unlines . fmap renderTestFailure $ toList xs} +renderTestFailures xs = [__i| + Number of failed test cases: #{length xs} + #{unlines . fmap renderTestFailure $ toList xs} |] -- | Re-evaluate an on-chain script evaluation event. diff --git a/plutus-tx-plugin/app/GeneratePluginOptionsDoc.hs b/plutus-tx-plugin/app/GeneratePluginOptionsDoc.hs index 93353791f08..21c7f55304c 100644 --- a/plutus-tx-plugin/app/GeneratePluginOptionsDoc.hs +++ b/plutus-tx-plugin/app/GeneratePluginOptionsDoc.hs @@ -9,12 +9,13 @@ import PlutusTx.Options qualified as O import Control.Lens import Data.Map qualified as Map +import Data.String.Interpolate (__i) import Data.Text (Text) import Data.Text qualified as Text import Data.Text.IO qualified as Text import Options.Applicative qualified as OA import Prettyprinter -import PyF (fmt) + newtype Params = Params {paramOutputFile :: Text} @@ -39,8 +40,7 @@ main = do Text.writeFile (Text.unpack $ paramOutputFile params) optionsTable optionsTable :: Text -optionsTable = - [fmt| +optionsTable = [__i| .. This file is generated by running plutus-tx-plugin:gen-plugin-opts-doc. Do not modify by hand. @@ -53,17 +53,16 @@ optionsTable = - Value Type - Default - Description -{Text.unlines $ uncurry genRow <$> Map.toList O.pluginOptions} + +#{Text.unlines $ uncurry genRow <$> Map.toList O.pluginOptions} |] genRow :: O.OptionKey -> O.PluginOption -> Text -genRow k (O.PluginOption tr _ field desc) = - [fmt| - * - ``{k}`` - - {valueType} - - {show (pretty defaultValue)} - - {desc} -|] - where - valueType = show tr - defaultValue = O.defaultPluginOptions ^. field +genRow k (O.PluginOption tr _ field desc) = [__i| + * - ``#{k}`` + - #{show tr} + - #{show (pretty defaultValue)} + - #{desc} + |] + where + defaultValue = O.defaultPluginOptions ^. field diff --git a/plutus-tx-plugin/plutus-tx-plugin.cabal b/plutus-tx-plugin/plutus-tx-plugin.cabal index 6db8e69f716..cf9b2040039 100644 --- a/plutus-tx-plugin/plutus-tx-plugin.cabal +++ b/plutus-tx-plugin/plutus-tx-plugin.cabal @@ -68,11 +68,9 @@ library PlutusTx.PIRTypes PlutusTx.PLCTypes - -- this comment should be by the dep, but cabal-fmt moves it :( - -- Newer PyF is mysteriously broken, hence the bound: https://github.com/guibou/PyF/issues/111 build-depends: , array - , base >=4.9 && <5 + , base >=4.9 && <5 , bytestring , containers , either @@ -81,10 +79,10 @@ library , ghc-prim , lens , mtl - , plutus-core ^>=1.0 - , plutus-tx ^>=1.0 + , plutus-core ^>=1.0 + , plutus-tx ^>=1.0 , prettyprinter - , PyF <0.11 + , string-interpolate , template-haskell , text , transformers @@ -109,7 +107,7 @@ executable gen-plugin-opts-doc , optparse-applicative , plutus-tx-plugin , prettyprinter - , PyF + , string-interpolate , text default-language: Haskell2010 diff --git a/plutus-tx-plugin/src/PlutusTx/Options.hs b/plutus-tx-plugin/src/PlutusTx/Options.hs index 08ab7e22cad..616426e386a 100644 --- a/plutus-tx-plugin/src/PlutusTx/Options.hs +++ b/plutus-tx-plugin/src/PlutusTx/Options.hs @@ -23,12 +23,13 @@ import Data.List.NonEmpty (NonEmpty) import Data.Map (Map) import Data.Map qualified as Map import Data.Proxy +import Data.String.Interpolate (__i) import Data.Text (Text) import Data.Text qualified as Text import Data.Type.Equality import GhcPlugins qualified as GHC import Prettyprinter -import PyF (fmt) + import Text.Read (readMaybe) import Type.Reflection @@ -88,27 +89,25 @@ newtype ParseErrors = ParseErrors (NonEmpty ParseError) deriving newtype (Semigroup) instance Show ParseErrors where - show (ParseErrors errs) = - [fmt|PlutusTx.Plugin: failed to parse options: -{Text.intercalate "\n" (fmap renderParseError (toList errs))}|] + show (ParseErrors errs) = [__i| + PlutusTx.Plugin: failed to parse options: + #{Text.intercalate "\n" (fmap renderParseError (toList errs))} + |] instance Exception ParseErrors renderParseError :: ParseError -> Text renderParseError = \case CannotParseValue k v tr -> - [fmt|Cannot parse value {v} for option {k} into type {show tr}.|] + [__i|Cannot parse value #{v} for option #{k} into type #{show tr}.|] UnexpectedValue k v -> - [fmt|Option {k} is a flag and does not take a value, but was given {v}.|] + [__i|Option #{k} is a flag and does not take a value, but was given #{v}.|] MissingValue k -> - [fmt|Option {k} needs a value.|] + [__i|Option #{k} needs a value.|] UnrecognisedOption k suggs -> - [fmt|Unrecgonised option: {k}.|] <> case suggs of + [__i|Unrecognised option: #{k}.|] <> case suggs of [] -> "" - _ -> - [fmt| -Did you mean one of: -{Text.intercalate "\n" suggs}|] + _ -> [__i|\nDid you mean one of:\n#{Text.intercalate "\n" suggs}|] {- | Definition of plugin options.