convert RemoteConfigFieldParser to data type

This commit is contained in:
Joey Hess 2020-01-20 13:49:30 -04:00
parent 0b6fb506eb
commit 923230ea30
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 39 additions and 14 deletions

View file

@ -38,7 +38,12 @@ data RemoteConfigValue where
- Presence of fields that are not included in this list will cause
- a parse failure.
-}
type RemoteConfigFieldParser = (RemoteConfigField, Maybe (ProposedAccepted String) -> RemoteConfig -> Either String (Maybe RemoteConfigValue))
data RemoteConfigFieldParser = RemoteConfigFieldParser
{ parserForField :: RemoteConfigField
, valueParser :: Maybe (ProposedAccepted String) -> RemoteConfig -> Either String (Maybe RemoteConfigValue)
--, fieldDesc :: String
--, valueExample :: String
}
data RemoteConfigParser = RemoteConfigParser
{ remoteConfigFieldParsers :: [RemoteConfigFieldParser]
@ -54,5 +59,5 @@ addRemoteConfigParser l rpc = rpc
remoteConfigFieldParsers rpc ++ filter isnew l
}
where
s = S.fromList (map (\(f, _) -> f) (remoteConfigFieldParsers rpc))
isnew (f, _) = not (S.member f s)
s = S.fromList (map parserForField (remoteConfigFieldParsers rpc))
isnew p = not (S.member (parserForField p) s)