Skip to content

Commit

Permalink
added DecodeJson instance for Remapping
Browse files Browse the repository at this point in the history
  • Loading branch information
martyall committed Sep 27, 2023
1 parent a17d9ee commit cb1fcd2
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion src/Language/Solidity/Compiler/Types/Settings.purs
Expand Up @@ -24,14 +24,15 @@ module Language.Solidity.Compiler.Types.Settings

import Prelude

import Control.Alternative ((<|>))
import Data.Argonaut (class DecodeJson, class EncodeJson, Json, decodeJson, encodeJson, fromString, jsonEmptyArray, jsonEmptyObject, jsonSingletonObject, (.!=), (.:), (.:!), (:=?), (~>?))
import Data.Argonaut as A
import Data.Argonaut.Decode.Error (JsonDecodeError(..), printJsonDecodeError)
import Data.Array (nub, null, uncons)
import Data.Bifunctor (lmap)
import Data.Either (Either(..), note)
import Data.Maybe (Maybe(..), fromMaybe)
import Data.String (Pattern(..), joinWith, split)
import Data.String (Pattern(..), joinWith, split, stripPrefix)
import Data.Traversable (for, traverse)
import Data.Tuple (Tuple(..))
import Foreign.Object as FO
Expand All @@ -55,6 +56,20 @@ instance encodeJsonRemapping :: EncodeJson Remapping where
GlobalRemapping g -> ":g=" <> g.to
Remapping r -> r.from <> "=" <> r.to

instance DecodeJson Remapping where
decodeJson json = do
str <- decodeJson json
global str <|> remap str
where
global str = do
case stripPrefix (Pattern ":g=") str of
Nothing -> Left $ Named "GlobalRemapping" $ UnexpectedValue json
Just to -> pure $ GlobalRemapping { to }
remap str = do
case split (Pattern "=") str of
[ from, to ] -> pure $ Remapping { from, to }
_ -> Left $ Named "Remapping" $ UnexpectedValue json

--------------------------------------------------
--- "settings.optimizer.yulDetails"

Expand Down

0 comments on commit cb1fcd2

Please sign in to comment.