{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE TemplateHaskell, Trustworthy #-}

-- | TH-derived Aeson instances for Data.Microformats2.
module Data.Microformats2.Aeson () where

import           Data.Microformats2
import           Data.Aeson.TH

-- Using "t" and "c" like Pandoc

$(deriveJSON defaultOptions{sumEncoding = TaggedObject { tagFieldName = "t", contentsFieldName = "c" }} ''GeoReference)
$(deriveJSON defaultOptions{sumEncoding = TaggedObject { tagFieldName = "t", contentsFieldName = "c" }} ''AdrReference)
$(deriveJSON defaultOptions{sumEncoding = TaggedObject { tagFieldName = "t", contentsFieldName = "c" }} ''LocationReference)
$(deriveJSON defaultOptions{sumEncoding = TaggedObject { tagFieldName = "t", contentsFieldName = "c" }} ''CardReference)
$(deriveJSON defaultOptions{sumEncoding = TaggedObject { tagFieldName = "t", contentsFieldName = "c" }} ''EntryReference)
$(deriveJSON defaultOptions{sumEncoding = TaggedObject { tagFieldName = "t", contentsFieldName = "c" }} ''ContentReference)
$(deriveJSON defaultOptions{fieldLabelModifier = drop 3} ''Geo)
$(deriveJSON defaultOptions{fieldLabelModifier = drop 3} ''Adr)
$(deriveJSON defaultOptions{fieldLabelModifier = drop 4} ''Card)
$(deriveJSON defaultOptions{fieldLabelModifier = drop 4} ''Cite)
$(deriveJSON defaultOptions{fieldLabelModifier = drop 5} ''Entry)