This commit is contained in:
Dmitry Zuikov 2024-07-25 11:56:21 +03:00
parent d04d8fd588
commit fb2de50461
2 changed files with 17 additions and 0 deletions

View File

@ -80,6 +80,9 @@ instance IsContext c => OptionalVal c Int where
LitIntVal x -> fromIntegral x LitIntVal x -> fromIntegral x
_ -> d _ -> d
hasKey :: IsContext c => Id -> [Syntax c] -> Maybe (Syntax c)
hasKey k ss = headMay [ e | ListVal [SymbolVal z, e] <- ss, z == k]
stringLike :: Syntax c -> Maybe String stringLike :: Syntax c -> Maybe String
stringLike = \case stringLike = \case
LitStrVal s -> Just $ Text.unpack s LitStrVal s -> Just $ Text.unpack s

View File

@ -13,9 +13,23 @@ import Data.ByteString.Char8 qualified as BS8
import Data.Text qualified as Text import Data.Text qualified as Text
import Lens.Micro.Platform import Lens.Micro.Platform
sigilEntries :: forall c m . (c ~ C, IsContext c, MonadUnliftIO m) => MakeDictM c m () sigilEntries :: forall c m . (c ~ C, IsContext c, MonadUnliftIO m) => MakeDictM c m ()
sigilEntries = do sigilEntries = do
entry $ bindMatch "hbs2:sigil:sign-pubkey" $ \case
[ ListVal (SymbolVal sigil : (hasKey "sign-pubkey" -> Just s)) ] -> do
pure s
_ -> throwIO $ BadFormException @C nil
entry $ bindMatch "hbs2:sigil:encrypt-pubkey" $ \case
[ ListVal (SymbolVal sigil : (hasKey "encrypt-pubkey" -> Just s)) ] -> do
pure s
_ -> throwIO $ BadFormException @C nil
entry $ bindMatch "hbs2:sigil:parse" $ \case entry $ bindMatch "hbs2:sigil:parse" $ \case
[StringLike s] -> do [StringLike s] -> do