File tree Expand file tree Collapse file tree 4 files changed +12
-2
lines changed Expand file tree Collapse file tree 4 files changed +12
-2
lines changed Original file line number Diff line number Diff line change 1
1
cabal-version : 3.4
2
2
name : cuddle
3
- version : 0.1.12 .0
3
+ version : 0.1.20 .0
4
4
synopsis : CDDL Generator and test utilities
5
5
6
6
-- description:
Original file line number Diff line number Diff line change @@ -318,6 +318,11 @@ genForCTree (CTree.Enum node) = do
318
318
genForNode $ nodes !! ix
319
319
_ -> error " Attempt to form an enum from something other than a group"
320
320
genForCTree (CTree. Unwrap node) = genForCTree =<< resolveIfRef node
321
+ genForCTree (CTree. Tag tag node) = do
322
+ enc <- genForNode node
323
+ case enc of
324
+ S x -> pure $ S $ TTagged tag x
325
+ _ -> error " Tag controller does not correspond to a single term"
321
326
322
327
genForNode :: (RandomGen g ) => CTree. Node MonoRef -> M g WrappedTerm
323
328
genForNode = genForCTree <=< resolveIfRef
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ import Codec.CBOR.Cuddle.CDDL.Postlude (PTerm)
13
13
import Data.Hashable (Hashable )
14
14
import Data.List.NonEmpty qualified as NE
15
15
import Data.Map.Strict qualified as Map
16
+ import Data.Word (Word64 )
16
17
import GHC.Generics (Generic )
17
18
18
19
--------------------------------------------------------------------------------
@@ -42,6 +43,7 @@ data CTree f
42
43
| Control { op :: CtlOp , target :: Node f , controller :: Node f }
43
44
| Enum (Node f )
44
45
| Unwrap (Node f )
46
+ | Tag Word64 (Node f )
45
47
deriving (Generic )
46
48
47
49
-- | Traverse the CTree, carrying out the given operation at each node
@@ -67,6 +69,7 @@ traverseCTree atNode (Control o t c) = do
67
69
pure $ Control o t' c'
68
70
traverseCTree atNode (Enum ref) = Enum <$> atNode ref
69
71
traverseCTree atNode (Unwrap ref) = Unwrap <$> atNode ref
72
+ traverseCTree atNode (Tag i ref) = Tag i <$> atNode ref
70
73
71
74
type Node f = f (CTree f )
72
75
Original file line number Diff line number Diff line change @@ -183,9 +183,11 @@ buildRefCTree rules = CTreeRoot $ fmap toCTreeRule rules
183
183
Ref n (fromGenArgs margs)
184
184
toCTreeT2 (T2Enum g) = toCTreeEnum g
185
185
toCTreeT2 (T2EnumRef n margs) = Ref n $ fromGenArgs margs
186
- toCTreeT2 (T2Tag _mint t0) =
186
+ toCTreeT2 (T2Tag Nothing t0) =
187
187
-- Currently not validating tags
188
188
toCTreeT0 t0
189
+ toCTreeT2 (T2Tag (Just tag) t0) =
190
+ It . CTree. Tag tag $ toCTreeT0 t0
189
191
toCTreeT2 (T2DataItem _maj _mmin) =
190
192
-- We don't validate numerical items yet
191
193
It $ CTree. Postlude PTAny
You can’t perform that action at this time.
0 commit comments