From 7b5d27d6951a8c82befc9108835d000ef83bf284 Mon Sep 17 00:00:00 2001
From: Shae Erisson <shae@scannedinavian.com>
Date: Tue, 6 Jun 2023 14:25:18 -0500
Subject: [PATCH] add SDMF parser with string replacement

---
 src/Tahoe/Directory.hs                     |  1 +
 src/Tahoe/Directory/Internal/Capability.hs | 11 ++++++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/Tahoe/Directory.hs b/src/Tahoe/Directory.hs
index f661cde..27451c2 100644
--- a/src/Tahoe/Directory.hs
+++ b/src/Tahoe/Directory.hs
@@ -8,6 +8,7 @@ import Tahoe.Directory.Internal.Capability (
     ConfidentialShowable (..),
     DirectoryCapability (..),
     pReadCHK,
+    pReadSDMF,
     pVerifyCHK,
  )
 import Tahoe.Directory.Internal.Parsing (parse, serialize)
diff --git a/src/Tahoe/Directory/Internal/Capability.hs b/src/Tahoe/Directory/Internal/Capability.hs
index efdc0d3..87737f1 100644
--- a/src/Tahoe/Directory/Internal/Capability.hs
+++ b/src/Tahoe/Directory/Internal/Capability.hs
@@ -5,6 +5,8 @@ module Tahoe.Directory.Internal.Capability where
 import qualified Data.Text as T
 import Data.Void (Void)
 import qualified Tahoe.CHK.Capability as CHK
+import qualified Tahoe.SDMF as SDMF
+
 import Text.Megaparsec (Parsec, getInput, setInput)
 
 {- | Something which contains confidential information and can be rendered as
@@ -19,7 +21,7 @@ class ConfidentialShowable s where
 {- | A wrapper around some other capability type which signals that the
  plaintext is an encoded list of files.
 -}
-newtype DirectoryCapability a = DirectoryCapability a
+newtype DirectoryCapability a = DirectoryCapability a deriving (Eq, Ord, Show)
 
 instance ConfidentialShowable (DirectoryCapability CHK.Verifier) where
     confidentiallyShow (DirectoryCapability a) =
@@ -54,3 +56,10 @@ pReadCHK = do
     setInput $ T.replace "URI:DIR2-CHK:" "URI:CHK:" s
     v <- CHK.pReader
     pure $ DirectoryCapability v
+
+pReadSDMF :: Parser (DirectoryCapability SDMF.Reader)
+pReadSDMF = do
+    s <- getInput
+    setInput $ T.replace "URI:DIR2-RO:" "URI:SSK-RO:" s
+    v <- SDMF.pReader
+    pure $ DirectoryCapability v
-- 
GitLab