@@ -12,6 +12,7 @@ import Cardano.Prelude
1212
1313import Cardano.Metadata.Types
1414 ( Attested (.. )
15+ , Decimals (.. )
1516 , Description (.. )
1617 , Logo (.. )
1718 , Logo (.. )
@@ -53,6 +54,7 @@ data GoguenRegistryEntry f = GoguenRegistryEntry
5354 , _goguenRegistryEntry_logo :: f (Attested Logo )
5455 , _goguenRegistryEntry_url :: f (Attested Url )
5556 , _goguenRegistryEntry_ticker :: f (Attested Ticker )
57+ , _goguenRegistryEntry_decimals :: f (Attested Decimals )
5658 }
5759
5860deriving instance
@@ -63,8 +65,20 @@ deriving instance
6365 , Show (f (Attested Logo ))
6466 , Show (f (Attested Url ))
6567 , Show (f (Attested Ticker ))
68+ , Show (f (Attested Decimals ))
6669 ) => Show (GoguenRegistryEntry f )
6770
71+ deriving instance
72+ ( Eq (f Subject )
73+ , Eq (f Policy )
74+ , Eq (f (Attested Name ))
75+ , Eq (f (Attested Description ))
76+ , Eq (f (Attested Logo ))
77+ , Eq (f (Attested Url ))
78+ , Eq (f (Attested Ticker ))
79+ , Eq (f (Attested Decimals ))
80+ ) => Eq (GoguenRegistryEntry f )
81+
6882instance ToJSON (GoguenRegistryEntry Maybe ) where
6983 toJSON r = Aeson. object $ mconcat
7084 [ [ " subject" .= _goguenRegistryEntry_subject r
@@ -82,6 +96,8 @@ instance ToJSON (GoguenRegistryEntry Maybe) where
8296 <$> (_goguenRegistryEntry_url r)
8397 , (\ x -> unProperty (wellKnownPropertyName (Proxy @ Ticker )) .= fmap wellKnownToJSON x)
8498 <$> (_goguenRegistryEntry_ticker r)
99+ , (\ x -> unProperty (wellKnownPropertyName (Proxy @ Decimals )) .= fmap wellKnownToJSON x)
100+ <$> (_goguenRegistryEntry_decimals r)
85101 ]
86102 ]
87103
@@ -96,17 +112,19 @@ parseRegistryEntry = Aeson.withObject "GoguenRegistryEntry" $ \o -> do
96112 policyRaw <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Policy )
97113 policy <- mapM parseWellKnown policyRaw
98114
99- nameField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Name )
100- descField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Description )
101- logoField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Logo )
102- urlField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Url )
103- tickerField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Ticker )
115+ nameField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Name )
116+ descField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Description )
117+ logoField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Logo )
118+ urlField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Url )
119+ tickerField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Ticker )
120+ decimalsField <- o .:? unProperty (wellKnownPropertyName $ Proxy @ Decimals )
104121
105122 nameAnn <- mapM parseWithAttestation nameField
106123 descAnn <- mapM parseWithAttestation descField
107124 logoAnn <- mapM parseWithAttestation logoField
108125 urlAnn <- mapM parseWithAttestation urlField
109126 tickerAnn <- mapM parseWithAttestation tickerField
127+ decimalsAnn <- mapM parseWithAttestation decimalsField
110128
111129 pure $ GoguenRegistryEntry
112130 { _goguenRegistryEntry_subject = Subject <$> subject
@@ -116,6 +134,7 @@ parseRegistryEntry = Aeson.withObject "GoguenRegistryEntry" $ \o -> do
116134 , _goguenRegistryEntry_logo = logoAnn
117135 , _goguenRegistryEntry_url = urlAnn
118136 , _goguenRegistryEntry_ticker = tickerAnn
137+ , _goguenRegistryEntry_decimals = decimalsAnn
119138 }
120139
121140validateEntry
@@ -151,6 +170,7 @@ validateEntry record = do
151170 forM_ (_goguenRegistryEntry_logo record) $ verifyLocalAttestations " logo"
152171 forM_ (_goguenRegistryEntry_url record) $ verifyLocalAttestations " url"
153172 forM_ (_goguenRegistryEntry_ticker record) $ verifyLocalAttestations " ticker"
173+ forM_ (_goguenRegistryEntry_decimals record) $ verifyLocalAttestations " decimals"
154174 where
155175 verifyField :: (PartialGoguenRegistryEntry -> Maybe a ) -> Either Text a
156176 verifyField field = maybe (Left missingFields) Right (field record)
@@ -159,7 +179,7 @@ validateEntry record = do
159179 missingFields = mconcat
160180 [ missingField " Missing field subject"
161181 _goguenRegistryEntry_subject
162- , missingField " Missing field policy: Use -p to speciy "
182+ , missingField " Missing field policy: Use -p to specify "
163183 _goguenRegistryEntry_policy
164184 , missingField " Missing field name: Use -n to specify"
165185 _goguenRegistryEntry_name
0 commit comments