JTWT45BHSCSNVFFUW4OXPUHEV7OTC4SMME7PFBEYPBW66G5DZBGAC N6QJ236Y2AZPEGARYA2KRQ7USHCJ5FK3WPJE6KWMCCK2KEQMTA7AC E7PCIWPUOIVD55VKTKRQ6CB2TNEHXRG5KSEHXXBDF7KUR3YH4QQAC DT2CHVIEWBPILKXBYFYT6C3C3BOADG6ITIUXYY6VMQU7EFT6S6JQC 44B3SUXR4SUE7PO34G7RMVQWHH4G6X342OZ3RZURV6JJQPHOJZZAC W65GMUVA7GT5Z5ZD5YIWSMVZK42TBY7CHQ5GQRQQ244ULZ4GF2HQC J7LSWCNFU3UWTUXFHQLIRLW2BHXJA54AT6SR5JY6JK3XABO4ZIXQC 2VCC6DPGXLR6KYEW5NOLKPE6TXWHY5M6B74ZRZBU6IP3LZQDGCXQC B2JWXIEPCMVVITDJDR2SACY4VHITXGH7ZM6A5RWN6E7OKTO43TUAC instance ToJSON Volume wheretoJSON = Number . fromIntegral . fromVolumetoEncoding = int . fromVolumeinstance FromJSON Volume whereparseJSON (Number x) =let maybeVolume = Scientific.toBoundedInteger x >>= toVolumein case maybeVolume ofJust vol -> pure volNothing -> fail "Volume number is out of bounds"parseJSON _ = fail "Volume must be a number"instance ToJSON Primer wheretoEncoding = genericToEncoding jsonOptionsinstance FromJSON Primer whereparseJSON = genericParseJSON jsonOptions
module AlBhed.JSON() whereimport Data.Aesonimport Data.Aeson.Encodingimport Data.JSONimport qualified Data.Scientific as Scientific (toBoundedInteger)import AlBhedinstance ToJSON Volume whereinstance FromJSON Volume whereparseJSON (Number x) =let maybeVolume = Scientific.toBoundedInteger x >>= toVolumein case maybeVolume ofJust vol -> pure volNothing -> fail "Volume number is out of bounds"parseJSON _ = fail "Volume must be a number"instance ToJSON Primer whereinstance FromJSON Primer whereparseJSON = genericParseJSON jsonOptionstoEncoding = genericToEncoding jsonOptionstoJSON = Number . fromIntegral . fromVolumetoEncoding = int . fromVolume