microformats2-types 0.3.0 → 0.4.0
raw patch · 5 files changed
+176/−162 lines, 5 filesdep +data-default-classdep −data-defaultdep −eitherPVP ok
version bump matches the API change (PVP)
Dependencies added: data-default-class
Dependencies removed: data-default, either
API changes (from Hackage documentation)
- Data.Microformats2: Here :: a -> Embedded a
- Data.Microformats2: Nowhere :: Embedded a
- Data.Microformats2: Somewhere :: (Link a) -> Embedded a
- Data.Microformats2: data Embedded a
- Data.Microformats2: hereFromMaybe :: Maybe a -> Embedded a
- Data.Microformats2: instance Data a => Data (Embedded a)
- Data.Microformats2: instance Eq a => Eq (Embedded a)
- Data.Microformats2: instance Show a => Show (Embedded a)
- Data.Microformats2: instance Typeable Embedded
- Data.Microformats2: somewhereFromMaybe :: Maybe (Link a) -> Embedded a
- Data.Microformats2: type ContentReference = Either Pandoc Text
- Data.Microformats2: type EntryReference = Either (Embedded Cite) (Link Entry)
- Data.Microformats2: type Link a = Text
- Data.Microformats2: type LocationReference = Either (Embedded Card) (Embedded Adr)
- Data.Microformats2.Aeson: instance FromJSON a0 => FromJSON (Embedded a0)
- Data.Microformats2.Aeson: instance ToJSON a0 => ToJSON (Embedded a0)
+ Data.Microformats2: AdrAdr :: Adr -> AdrReference
+ Data.Microformats2: AdrLoc :: Adr -> LocationReference
+ Data.Microformats2: CardCard :: Card -> CardReference
+ Data.Microformats2: CardLoc :: Card -> LocationReference
+ Data.Microformats2: CiteEntry :: Cite -> EntryReference
+ Data.Microformats2: EntryEntry :: Entry -> EntryReference
+ Data.Microformats2: GeoGeo :: Geo -> GeoReference
+ Data.Microformats2: GeoLoc :: Geo -> LocationReference
+ Data.Microformats2: PandocContent :: Pandoc -> ContentReference
+ Data.Microformats2: TextAdr :: Text -> AdrReference
+ Data.Microformats2: TextCard :: Text -> CardReference
+ Data.Microformats2: TextContent :: Text -> ContentReference
+ Data.Microformats2: TextEntry :: Text -> EntryReference
+ Data.Microformats2: TextGeo :: Text -> GeoReference
+ Data.Microformats2: TextLoc :: Text -> LocationReference
+ Data.Microformats2: UrlEntry :: Text -> EntryReference
+ Data.Microformats2: UrlGeo :: Text -> GeoReference
+ Data.Microformats2: data AdrReference
+ Data.Microformats2: data CardReference
+ Data.Microformats2: data ContentReference
+ Data.Microformats2: data EntryReference
+ Data.Microformats2: data GeoReference
+ Data.Microformats2: data LocationReference
+ Data.Microformats2: instance Data AdrReference
+ Data.Microformats2: instance Data CardReference
+ Data.Microformats2: instance Data ContentReference
+ Data.Microformats2: instance Data EntryReference
+ Data.Microformats2: instance Data GeoReference
+ Data.Microformats2: instance Data LocationReference
+ Data.Microformats2: instance Eq AdrReference
+ Data.Microformats2: instance Eq CardReference
+ Data.Microformats2: instance Eq ContentReference
+ Data.Microformats2: instance Eq EntryReference
+ Data.Microformats2: instance Eq GeoReference
+ Data.Microformats2: instance Eq LocationReference
+ Data.Microformats2: instance Show AdrReference
+ Data.Microformats2: instance Show CardReference
+ Data.Microformats2: instance Show ContentReference
+ Data.Microformats2: instance Show EntryReference
+ Data.Microformats2: instance Show GeoReference
+ Data.Microformats2: instance Show LocationReference
+ Data.Microformats2: instance Typeable AdrReference
+ Data.Microformats2: instance Typeable CardReference
+ Data.Microformats2: instance Typeable ContentReference
+ Data.Microformats2: instance Typeable EntryReference
+ Data.Microformats2: instance Typeable GeoReference
+ Data.Microformats2: instance Typeable LocationReference
+ Data.Microformats2.Aeson: instance FromJSON AdrReference
+ Data.Microformats2.Aeson: instance FromJSON CardReference
+ Data.Microformats2.Aeson: instance FromJSON ContentReference
+ Data.Microformats2.Aeson: instance FromJSON EntryReference
+ Data.Microformats2.Aeson: instance FromJSON GeoReference
+ Data.Microformats2.Aeson: instance FromJSON LocationReference
+ Data.Microformats2.Aeson: instance ToJSON AdrReference
+ Data.Microformats2.Aeson: instance ToJSON CardReference
+ Data.Microformats2.Aeson: instance ToJSON ContentReference
+ Data.Microformats2.Aeson: instance ToJSON EntryReference
+ Data.Microformats2.Aeson: instance ToJSON GeoReference
+ Data.Microformats2.Aeson: instance ToJSON LocationReference
- Data.Microformats2: Adr :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Embedded Geo -> Adr
+ Data.Microformats2: Adr :: [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [GeoReference] -> Adr
- Data.Microformats2: Card :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> [Text] -> Embedded Adr -> Maybe Text -> Maybe Text -> Maybe UTCTime -> Maybe Text -> Embedded Card -> Maybe Text -> Maybe Text -> [Text] -> Maybe Text -> Maybe Text -> Maybe UTCTime -> Card
+ Data.Microformats2: Card :: [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [AdrReference] -> [Text] -> [Text] -> [UTCTime] -> [Text] -> [CardReference] -> [Text] -> [Text] -> [Text] -> [Text] -> [Text] -> [UTCTime] -> Card
- Data.Microformats2: Cite :: Maybe Text -> Maybe UTCTime -> Embedded Card -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe UTCTime -> Maybe Text -> Cite
+ Data.Microformats2: Cite :: [Text] -> [UTCTime] -> [CardReference] -> [Text] -> [Text] -> [Text] -> [UTCTime] -> [ContentReference] -> Cite
- Data.Microformats2: Entry :: Maybe Text -> Maybe Text -> Maybe ContentReference -> Maybe UTCTime -> Maybe UTCTime -> Embedded Card -> [Text] -> Maybe Text -> Maybe Text -> Maybe LocationReference -> [EntryReference] -> [Text] -> Maybe EntryReference -> Maybe EntryReference -> Maybe EntryReference -> Entry
+ Data.Microformats2: Entry :: [Text] -> [Text] -> [ContentReference] -> [UTCTime] -> [UTCTime] -> [CardReference] -> [Text] -> [Text] -> [Text] -> [LocationReference] -> [EntryReference] -> [Text] -> [EntryReference] -> [EntryReference] -> [EntryReference] -> Entry
- Data.Microformats2: Geo :: Maybe Double -> Maybe Double -> Maybe Double -> Geo
+ Data.Microformats2: Geo :: [Double] -> [Double] -> [Double] -> Geo
- Data.Microformats2: adrCountryName :: Adr -> Maybe Text
+ Data.Microformats2: adrCountryName :: Adr -> [Text]
- Data.Microformats2: adrExtendedAddress :: Adr -> Maybe Text
+ Data.Microformats2: adrExtendedAddress :: Adr -> [Text]
- Data.Microformats2: adrGeo :: Adr -> Embedded Geo
+ Data.Microformats2: adrGeo :: Adr -> [GeoReference]
- Data.Microformats2: adrLabel :: Adr -> Maybe Text
+ Data.Microformats2: adrLabel :: Adr -> [Text]
- Data.Microformats2: adrLocality :: Adr -> Maybe Text
+ Data.Microformats2: adrLocality :: Adr -> [Text]
- Data.Microformats2: adrPostOfficeBox :: Adr -> Maybe Text
+ Data.Microformats2: adrPostOfficeBox :: Adr -> [Text]
- Data.Microformats2: adrPostalCode :: Adr -> Maybe Text
+ Data.Microformats2: adrPostalCode :: Adr -> [Text]
- Data.Microformats2: adrRegion :: Adr -> Maybe Text
+ Data.Microformats2: adrRegion :: Adr -> [Text]
- Data.Microformats2: adrStreetAddress :: Adr -> Maybe Text
+ Data.Microformats2: adrStreetAddress :: Adr -> [Text]
- Data.Microformats2: cardAdditionalName :: Card -> Maybe Text
+ Data.Microformats2: cardAdditionalName :: Card -> [Text]
- Data.Microformats2: cardAdr :: Card -> Embedded Adr
+ Data.Microformats2: cardAdr :: Card -> [AdrReference]
- Data.Microformats2: cardAnniversary :: Card -> Maybe UTCTime
+ Data.Microformats2: cardAnniversary :: Card -> [UTCTime]
- Data.Microformats2: cardBday :: Card -> Maybe UTCTime
+ Data.Microformats2: cardBday :: Card -> [UTCTime]
- Data.Microformats2: cardEmail :: Card -> Maybe Text
+ Data.Microformats2: cardEmail :: Card -> [Text]
- Data.Microformats2: cardFamilyName :: Card -> Maybe Text
+ Data.Microformats2: cardFamilyName :: Card -> [Text]
- Data.Microformats2: cardGenderIdentity :: Card -> Maybe Text
+ Data.Microformats2: cardGenderIdentity :: Card -> [Text]
- Data.Microformats2: cardGivenName :: Card -> Maybe Text
+ Data.Microformats2: cardGivenName :: Card -> [Text]
- Data.Microformats2: cardHonorificPrefix :: Card -> Maybe Text
+ Data.Microformats2: cardHonorificPrefix :: Card -> [Text]
- Data.Microformats2: cardHonorificSuffix :: Card -> Maybe Text
+ Data.Microformats2: cardHonorificSuffix :: Card -> [Text]
- Data.Microformats2: cardJobTitle :: Card -> Maybe Text
+ Data.Microformats2: cardJobTitle :: Card -> [Text]
- Data.Microformats2: cardKey :: Card -> Maybe Text
+ Data.Microformats2: cardKey :: Card -> [Text]
- Data.Microformats2: cardLogo :: Card -> Maybe Text
+ Data.Microformats2: cardLogo :: Card -> [Text]
- Data.Microformats2: cardName :: Card -> Maybe Text
+ Data.Microformats2: cardName :: Card -> [Text]
- Data.Microformats2: cardNickname :: Card -> Maybe Text
+ Data.Microformats2: cardNickname :: Card -> [Text]
- Data.Microformats2: cardNote :: Card -> Maybe Text
+ Data.Microformats2: cardNote :: Card -> [Text]
- Data.Microformats2: cardOrg :: Card -> Embedded Card
+ Data.Microformats2: cardOrg :: Card -> [CardReference]
- Data.Microformats2: cardPhoto :: Card -> Maybe Text
+ Data.Microformats2: cardPhoto :: Card -> [Text]
- Data.Microformats2: cardRole :: Card -> Maybe Text
+ Data.Microformats2: cardRole :: Card -> [Text]
- Data.Microformats2: cardSex :: Card -> Maybe Text
+ Data.Microformats2: cardSex :: Card -> [Text]
- Data.Microformats2: cardSortString :: Card -> Maybe Text
+ Data.Microformats2: cardSortString :: Card -> [Text]
- Data.Microformats2: cardTel :: Card -> Maybe Text
+ Data.Microformats2: cardTel :: Card -> [Text]
- Data.Microformats2: cardUid :: Card -> Maybe Text
+ Data.Microformats2: cardUid :: Card -> [Text]
- Data.Microformats2: cardUrl :: Card -> Maybe Text
+ Data.Microformats2: cardUrl :: Card -> [Text]
- Data.Microformats2: citeAccessed :: Cite -> Maybe UTCTime
+ Data.Microformats2: citeAccessed :: Cite -> [UTCTime]
- Data.Microformats2: citeAuthor :: Cite -> Embedded Card
+ Data.Microformats2: citeAuthor :: Cite -> [CardReference]
- Data.Microformats2: citeContent :: Cite -> Maybe Text
+ Data.Microformats2: citeContent :: Cite -> [ContentReference]
- Data.Microformats2: citeName :: Cite -> Maybe Text
+ Data.Microformats2: citeName :: Cite -> [Text]
- Data.Microformats2: citePublication :: Cite -> Maybe Text
+ Data.Microformats2: citePublication :: Cite -> [Text]
- Data.Microformats2: citePublished :: Cite -> Maybe UTCTime
+ Data.Microformats2: citePublished :: Cite -> [UTCTime]
- Data.Microformats2: citeUid :: Cite -> Maybe Text
+ Data.Microformats2: citeUid :: Cite -> [Text]
- Data.Microformats2: citeUrl :: Cite -> Maybe Text
+ Data.Microformats2: citeUrl :: Cite -> [Text]
- Data.Microformats2: entryAuthor :: Entry -> Embedded Card
+ Data.Microformats2: entryAuthor :: Entry -> [CardReference]
- Data.Microformats2: entryContent :: Entry -> Maybe ContentReference
+ Data.Microformats2: entryContent :: Entry -> [ContentReference]
- Data.Microformats2: entryInReplyTo :: Entry -> Maybe EntryReference
+ Data.Microformats2: entryInReplyTo :: Entry -> [EntryReference]
- Data.Microformats2: entryLikeOf :: Entry -> Maybe EntryReference
+ Data.Microformats2: entryLikeOf :: Entry -> [EntryReference]
- Data.Microformats2: entryLocation :: Entry -> Maybe LocationReference
+ Data.Microformats2: entryLocation :: Entry -> [LocationReference]
- Data.Microformats2: entryName :: Entry -> Maybe Text
+ Data.Microformats2: entryName :: Entry -> [Text]
- Data.Microformats2: entryPublished :: Entry -> Maybe UTCTime
+ Data.Microformats2: entryPublished :: Entry -> [UTCTime]
- Data.Microformats2: entryRepostOf :: Entry -> Maybe EntryReference
+ Data.Microformats2: entryRepostOf :: Entry -> [EntryReference]
- Data.Microformats2: entrySummary :: Entry -> Maybe Text
+ Data.Microformats2: entrySummary :: Entry -> [Text]
- Data.Microformats2: entryUid :: Entry -> Maybe Text
+ Data.Microformats2: entryUid :: Entry -> [Text]
- Data.Microformats2: entryUpdated :: Entry -> Maybe UTCTime
+ Data.Microformats2: entryUpdated :: Entry -> [UTCTime]
- Data.Microformats2: entryUrl :: Entry -> Maybe Text
+ Data.Microformats2: entryUrl :: Entry -> [Text]
- Data.Microformats2: geoAltitude :: Geo -> Maybe Double
+ Data.Microformats2: geoAltitude :: Geo -> [Double]
- Data.Microformats2: geoLatitude :: Geo -> Maybe Double
+ Data.Microformats2: geoLatitude :: Geo -> [Double]
- Data.Microformats2: geoLongitude :: Geo -> Maybe Double
+ Data.Microformats2: geoLongitude :: Geo -> [Double]
- Data.Microformats2.Setters: setAdrCountryName :: Maybe Text -> Adr -> Adr
+ Data.Microformats2.Setters: setAdrCountryName :: [Text] -> Adr -> Adr
- Data.Microformats2.Setters: setAdrExtendedAddress :: Maybe Text -> Adr -> Adr
+ Data.Microformats2.Setters: setAdrExtendedAddress :: [Text] -> Adr -> Adr
- Data.Microformats2.Setters: setAdrGeo :: Embedded Geo -> Adr -> Adr
+ Data.Microformats2.Setters: setAdrGeo :: [GeoReference] -> Adr -> Adr
- Data.Microformats2.Setters: setAdrLabel :: Maybe Text -> Adr -> Adr
+ Data.Microformats2.Setters: setAdrLabel :: [Text] -> Adr -> Adr
- Data.Microformats2.Setters: setAdrLocality :: Maybe Text -> Adr -> Adr
+ Data.Microformats2.Setters: setAdrLocality :: [Text] -> Adr -> Adr
- Data.Microformats2.Setters: setAdrPostOfficeBox :: Maybe Text -> Adr -> Adr
+ Data.Microformats2.Setters: setAdrPostOfficeBox :: [Text] -> Adr -> Adr
- Data.Microformats2.Setters: setAdrPostalCode :: Maybe Text -> Adr -> Adr
+ Data.Microformats2.Setters: setAdrPostalCode :: [Text] -> Adr -> Adr
- Data.Microformats2.Setters: setAdrRegion :: Maybe Text -> Adr -> Adr
+ Data.Microformats2.Setters: setAdrRegion :: [Text] -> Adr -> Adr
- Data.Microformats2.Setters: setAdrStreetAddress :: Maybe Text -> Adr -> Adr
+ Data.Microformats2.Setters: setAdrStreetAddress :: [Text] -> Adr -> Adr
- Data.Microformats2.Setters: setCardAdditionalName :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardAdditionalName :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardAdr :: Embedded Adr -> Card -> Card
+ Data.Microformats2.Setters: setCardAdr :: [AdrReference] -> Card -> Card
- Data.Microformats2.Setters: setCardAnniversary :: Maybe UTCTime -> Card -> Card
+ Data.Microformats2.Setters: setCardAnniversary :: [UTCTime] -> Card -> Card
- Data.Microformats2.Setters: setCardBday :: Maybe UTCTime -> Card -> Card
+ Data.Microformats2.Setters: setCardBday :: [UTCTime] -> Card -> Card
- Data.Microformats2.Setters: setCardEmail :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardEmail :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardFamilyName :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardFamilyName :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardGenderIdentity :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardGenderIdentity :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardGivenName :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardGivenName :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardHonorificPrefix :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardHonorificPrefix :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardHonorificSuffix :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardHonorificSuffix :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardJobTitle :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardJobTitle :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardKey :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardKey :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardLogo :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardLogo :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardName :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardName :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardNickname :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardNickname :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardNote :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardNote :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardOrg :: Embedded Card -> Card -> Card
+ Data.Microformats2.Setters: setCardOrg :: [CardReference] -> Card -> Card
- Data.Microformats2.Setters: setCardPhoto :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardPhoto :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardRole :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardRole :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardSex :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardSex :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardSortString :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardSortString :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardTel :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardTel :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardUid :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardUid :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCardUrl :: Maybe Text -> Card -> Card
+ Data.Microformats2.Setters: setCardUrl :: [Text] -> Card -> Card
- Data.Microformats2.Setters: setCiteAccessed :: Maybe UTCTime -> Cite -> Cite
+ Data.Microformats2.Setters: setCiteAccessed :: [UTCTime] -> Cite -> Cite
- Data.Microformats2.Setters: setCiteAuthor :: Embedded Card -> Cite -> Cite
+ Data.Microformats2.Setters: setCiteAuthor :: [CardReference] -> Cite -> Cite
- Data.Microformats2.Setters: setCiteContent :: Maybe Text -> Cite -> Cite
+ Data.Microformats2.Setters: setCiteContent :: [ContentReference] -> Cite -> Cite
- Data.Microformats2.Setters: setCiteName :: Maybe Text -> Cite -> Cite
+ Data.Microformats2.Setters: setCiteName :: [Text] -> Cite -> Cite
- Data.Microformats2.Setters: setCitePublication :: Maybe Text -> Cite -> Cite
+ Data.Microformats2.Setters: setCitePublication :: [Text] -> Cite -> Cite
- Data.Microformats2.Setters: setCitePublished :: Maybe UTCTime -> Cite -> Cite
+ Data.Microformats2.Setters: setCitePublished :: [UTCTime] -> Cite -> Cite
- Data.Microformats2.Setters: setCiteUid :: Maybe Text -> Cite -> Cite
+ Data.Microformats2.Setters: setCiteUid :: [Text] -> Cite -> Cite
- Data.Microformats2.Setters: setCiteUrl :: Maybe Text -> Cite -> Cite
+ Data.Microformats2.Setters: setCiteUrl :: [Text] -> Cite -> Cite
- Data.Microformats2.Setters: setEntryAuthor :: Embedded Card -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryAuthor :: [CardReference] -> Entry -> Entry
- Data.Microformats2.Setters: setEntryContent :: Maybe ContentReference -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryContent :: [ContentReference] -> Entry -> Entry
- Data.Microformats2.Setters: setEntryInReplyTo :: Maybe EntryReference -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryInReplyTo :: [EntryReference] -> Entry -> Entry
- Data.Microformats2.Setters: setEntryLikeOf :: Maybe EntryReference -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryLikeOf :: [EntryReference] -> Entry -> Entry
- Data.Microformats2.Setters: setEntryLocation :: Maybe LocationReference -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryLocation :: [LocationReference] -> Entry -> Entry
- Data.Microformats2.Setters: setEntryName :: Maybe Text -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryName :: [Text] -> Entry -> Entry
- Data.Microformats2.Setters: setEntryPublished :: Maybe UTCTime -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryPublished :: [UTCTime] -> Entry -> Entry
- Data.Microformats2.Setters: setEntryRepostOf :: Maybe EntryReference -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryRepostOf :: [EntryReference] -> Entry -> Entry
- Data.Microformats2.Setters: setEntrySummary :: Maybe Text -> Entry -> Entry
+ Data.Microformats2.Setters: setEntrySummary :: [Text] -> Entry -> Entry
- Data.Microformats2.Setters: setEntryUid :: Maybe Text -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryUid :: [Text] -> Entry -> Entry
- Data.Microformats2.Setters: setEntryUpdated :: Maybe UTCTime -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryUpdated :: [UTCTime] -> Entry -> Entry
- Data.Microformats2.Setters: setEntryUrl :: Maybe Text -> Entry -> Entry
+ Data.Microformats2.Setters: setEntryUrl :: [Text] -> Entry -> Entry
- Data.Microformats2.Setters: setGeoAltitude :: Maybe Double -> Geo -> Geo
+ Data.Microformats2.Setters: setGeoAltitude :: [Double] -> Geo -> Geo
- Data.Microformats2.Setters: setGeoLatitude :: Maybe Double -> Geo -> Geo
+ Data.Microformats2.Setters: setGeoLatitude :: [Double] -> Geo -> Geo
- Data.Microformats2.Setters: setGeoLongitude :: Maybe Double -> Geo -> Geo
+ Data.Microformats2.Setters: setGeoLongitude :: [Double] -> Geo -> Geo
Files
- README.md +13/−1
- library/Data/Microformats2.hs +149/−150
- library/Data/Microformats2/Aeson.hs +9/−2
- library/Data/Microformats2/Setters.hs +2/−5
- microformats2-types.cabal +3/−4
README.md view
@@ -1,9 +1,21 @@ # microformats2-types [](https://hackage.haskell.org/package/microformats2-types) [](https://tldrlegal.com/license/-isc-license) -[Microformats 2] types for Haskell, with [Aeson] instances.+[Microformats 2] types for Haskell! +- [Aeson] instances+- [Default] instances+- [Setters] instances+- [Pandoc] content for h-entry++This package is not very interesting, check out [microformats2-parser] and [sweetroll] :-)+ [Microformats 2]: http://microformats.org/wiki/microformats2 [Aeson]: https://hackage.haskell.org/package/aeson+[Default]: https://hackage.haskell.org/package/data-default+[Setters]: https://hackage.haskell.org/package/setters+[Pandoc]: https://hackage.haskell.org/package/pandoc+[microformats2-parser]: https://github.com/myfreeweb/microformats2-parser+[sweetroll]: https://github.com/myfreeweb/sweetroll ## License
library/Data/Microformats2.hs view
@@ -1,208 +1,207 @@-{-# LANGUAGE DeriveDataTypeable, Trustworthy #-}+{-# LANGUAGE DeriveDataTypeable, UnicodeSyntax, Trustworthy #-} -- | Microformats 2 types for Haskell. -- -- Notes: ----- 1. Pretty much all properties in MF2 are optional -- this is why we use Maybe when lists don't make sense.------ 2. We don't duplicate sub-properties in parent types.+-- 1. We don't duplicate sub-properties in parent types. -- E.g. h-adr has both p-geo and p-latitude, p-longitude, p-altitude.--- Adr only has an Embedded Geo.+-- Adr only has a Geo. ----- 3. Lazy Text is used for storing texts, because it's the format used in Scotty, Hastache and other popular web libraries.-module Data.Microformats2 (module Data.Microformats2) where+-- 2. Lazy Text is used for storing texts, because it's the format used in Scotty, Hastache and other popular web libraries.+--+-- 3. Lists are used everywhere, because all properties might be multivalued, even though it doesn't always make sense.+-- Use 'headMay' from the safe package!+--+-- 4. SomethingReference sum types are used for, well, references.+-- The spec always makes embedded microformats optional, so these types include Text options.+--+module Data.Microformats2 where import safe Data.Typeable (Typeable) import safe Data.Text.Lazy (Text) import safe Data.Data (Data)-import Data.Default+import Data.Default.Class import Data.Time (UTCTime) import Text.Pandoc.Definition (Pandoc) --- | An alias for lazy Text as a phantom type for storing the type of linked data.-type Link a = Text+-- | A Geo reference.+data GeoReference = TextGeo Text | UrlGeo Text | GeoGeo Geo -- LOL+ deriving (Eq, Show, Data, Typeable) --- | A type that represents all the ways Microformats objects can be embedded inside one another.-data Embedded a = Here a | Somewhere (Link a) | Nowhere+-- | An Adr reference.+data AdrReference = TextAdr Text | AdrAdr Adr deriving (Eq, Show, Data, Typeable) --- | Converts a Maybe <thing> to an Embedded wrapping the same <thing>.-hereFromMaybe :: Maybe a -> Embedded a-hereFromMaybe m = case m of- Just thing -> Here thing- Nothing -> Nowhere+-- | A location (Card/Adr/Geo) reference.+data LocationReference = TextLoc Text | CardLoc Card | AdrLoc Adr | GeoLoc Geo+ deriving (Eq, Show, Data, Typeable) --- | Converts a Maybe Link to an Embedded referencing the same URL.-somewhereFromMaybe :: Maybe (Link a) -> Embedded a-somewhereFromMaybe m = case m of- Just lnk -> Somewhere lnk- Nothing -> Nowhere+-- | A Card reference.+data CardReference = TextCard Text | CardCard Card+ deriving (Eq, Show, Data, Typeable) +-- | An Entry/Cite reference.+data EntryReference = TextEntry Text | UrlEntry Text | CiteEntry Cite | EntryEntry Entry+ deriving (Eq, Show, Data, Typeable)++-- | A content reference.+data ContentReference = TextContent Text | PandocContent Pandoc+ deriving (Eq, Show, Data, Typeable)+ -- | A Geo type, based on h-geo <http://microformats.org/wiki/h-geo> data Geo = Geo- { geoLatitude :: Maybe Double- , geoLongitude :: Maybe Double- , geoAltitude :: Maybe Double }+ { geoLatitude ∷ [Double]+ , geoLongitude ∷ [Double]+ , geoAltitude ∷ [Double] } deriving (Eq, Show, Data, Typeable) instance Default Geo where def = Geo- { geoLatitude = Nothing- , geoLongitude = Nothing- , geoAltitude = Nothing }+ { geoLatitude = []+ , geoLongitude = []+ , geoAltitude = [] } -- | An Adr type, based on h-adr <http://microformats.org/wiki/h-adr> data Adr = Adr- { adrStreetAddress :: Maybe Text- , adrExtendedAddress :: Maybe Text- , adrPostOfficeBox :: Maybe Text- , adrLocality :: Maybe Text- , adrRegion :: Maybe Text- , adrPostalCode :: Maybe Text- , adrCountryName :: Maybe Text- , adrLabel :: Maybe Text- , adrGeo :: Embedded Geo }+ { adrStreetAddress ∷ [Text]+ , adrExtendedAddress ∷ [Text]+ , adrPostOfficeBox ∷ [Text]+ , adrLocality ∷ [Text]+ , adrRegion ∷ [Text]+ , adrPostalCode ∷ [Text]+ , adrCountryName ∷ [Text]+ , adrLabel ∷ [Text]+ , adrGeo ∷ [GeoReference] } deriving (Eq, Show, Data, Typeable) instance Default Adr where def = Adr- { adrStreetAddress = Nothing- , adrExtendedAddress = Nothing- , adrPostOfficeBox = Nothing- , adrLocality = Nothing- , adrRegion = Nothing- , adrPostalCode = Nothing- , adrCountryName = Nothing- , adrLabel = Nothing- , adrGeo = Nowhere }+ { adrStreetAddress = []+ , adrExtendedAddress = []+ , adrPostOfficeBox = []+ , adrLocality = []+ , adrRegion = []+ , adrPostalCode = []+ , adrCountryName = []+ , adrLabel = []+ , adrGeo = [] } -- | A Card type, based on h-card <http://microformats.org/wiki/h-card> data Card = Card- { cardName :: Maybe Text- , cardHonorificPrefix :: Maybe Text- , cardGivenName :: Maybe Text- , cardAdditionalName :: Maybe Text- , cardFamilyName :: Maybe Text- , cardSortString :: Maybe Text- , cardHonorificSuffix :: Maybe Text- , cardNickname :: Maybe Text- , cardEmail :: Maybe Text- , cardLogo :: Maybe Text- , cardPhoto :: Maybe Text- , cardUrl :: Maybe Text- , cardUid :: Maybe Text- , cardCategory :: [Text]- , cardAdr :: Embedded Adr- , cardTel :: Maybe Text- , cardNote :: Maybe Text- , cardBday :: Maybe UTCTime- , cardKey :: Maybe Text- , cardOrg :: Embedded Card- , cardJobTitle :: Maybe Text- , cardRole :: Maybe Text- , cardImpp :: [Text]- , cardSex :: Maybe Text- , cardGenderIdentity :: Maybe Text- , cardAnniversary :: Maybe UTCTime }+ { cardName ∷ [Text]+ , cardHonorificPrefix ∷ [Text]+ , cardGivenName ∷ [Text]+ , cardAdditionalName ∷ [Text]+ , cardFamilyName ∷ [Text]+ , cardSortString ∷ [Text]+ , cardHonorificSuffix ∷ [Text]+ , cardNickname ∷ [Text]+ , cardEmail ∷ [Text]+ , cardLogo ∷ [Text]+ , cardPhoto ∷ [Text]+ , cardUrl ∷ [Text]+ , cardUid ∷ [Text]+ , cardCategory ∷ [Text]+ , cardAdr ∷ [AdrReference]+ , cardTel ∷ [Text]+ , cardNote ∷ [Text]+ , cardBday ∷ [UTCTime]+ , cardKey ∷ [Text]+ , cardOrg ∷ [CardReference]+ , cardJobTitle ∷ [Text]+ , cardRole ∷ [Text]+ , cardImpp ∷ [Text]+ , cardSex ∷ [Text]+ , cardGenderIdentity ∷ [Text]+ , cardAnniversary ∷ [UTCTime] } deriving (Eq, Show, Data, Typeable) instance Default Card where def = Card- { cardName = Nothing- , cardHonorificPrefix = Nothing- , cardGivenName = Nothing- , cardAdditionalName = Nothing- , cardFamilyName = Nothing- , cardSortString = Nothing- , cardHonorificSuffix = Nothing- , cardNickname = Nothing- , cardEmail = Nothing- , cardLogo = Nothing- , cardPhoto = Nothing- , cardUrl = Nothing- , cardUid = Nothing+ { cardName = []+ , cardHonorificPrefix = []+ , cardGivenName = []+ , cardAdditionalName = []+ , cardFamilyName = []+ , cardSortString = []+ , cardHonorificSuffix = []+ , cardNickname = []+ , cardEmail = []+ , cardLogo = []+ , cardPhoto = []+ , cardUrl = []+ , cardUid = [] , cardCategory = []- , cardAdr = Nowhere- , cardTel = Nothing- , cardNote = Nothing- , cardBday = Nothing- , cardKey = Nothing- , cardOrg = Nowhere- , cardJobTitle = Nothing- , cardRole = Nothing+ , cardAdr = []+ , cardTel = []+ , cardNote = []+ , cardBday = []+ , cardKey = []+ , cardOrg = []+ , cardJobTitle = []+ , cardRole = [] , cardImpp = []- , cardSex = Nothing- , cardGenderIdentity = Nothing- , cardAnniversary = Nothing }+ , cardSex = []+ , cardGenderIdentity = []+ , cardAnniversary = [] } -- | A Cite type, based on h-cite <http://microformats.org/wiki/h-cite> data Cite = Cite- { citeName :: Maybe Text- , citePublished :: Maybe UTCTime- , citeAuthor :: Embedded Card- , citeUrl :: Maybe Text- , citeUid :: Maybe Text- , citePublication :: Maybe Text- , citeAccessed :: Maybe UTCTime- , citeContent :: Maybe Text }+ { citeName ∷ [Text]+ , citePublished ∷ [UTCTime]+ , citeAuthor ∷ [CardReference]+ , citeUrl ∷ [Text]+ , citeUid ∷ [Text]+ , citePublication ∷ [Text]+ , citeAccessed ∷ [UTCTime]+ , citeContent ∷ [ContentReference] } deriving (Eq, Show, Data, Typeable) instance Default Cite where def = Cite- { citeName = Nothing- , citePublished = Nothing- , citeAuthor = Nowhere- , citeUrl = Nothing- , citeUid = Nothing- , citePublication = Nothing- , citeAccessed = Nothing- , citeContent = Nothing }---- | A location reference.--- Left means a Card is used, which is often used for checkins.--- Right means an Adr is used. If you only have a Geo, wrap it in an Adr.-type LocationReference = Either (Embedded Card) (Embedded Adr)---- | An Entry reference.-type EntryReference = Either (Embedded Cite) (Link Entry)---- | A content reference.-type ContentReference = Either Pandoc Text+ { citeName = []+ , citePublished = []+ , citeAuthor = []+ , citeUrl = []+ , citeUid = []+ , citePublication = []+ , citeAccessed = []+ , citeContent = [] } -- | An Entry type, based on h-entry <http://microformats.org/wiki/h-entry> with popular extensions. data Entry = Entry- { entryName :: Maybe Text- , entrySummary :: Maybe Text- , entryContent :: Maybe ContentReference- , entryPublished :: Maybe UTCTime- , entryUpdated :: Maybe UTCTime- , entryAuthor :: Embedded Card- , entryCategory :: [Text]- , entryUrl :: Maybe Text- , entryUid :: Maybe Text- , entryLocation :: Maybe LocationReference- , entryComments :: [EntryReference]- , entrySyndication :: [Text]- , entryInReplyTo :: Maybe EntryReference- , entryLikeOf :: Maybe EntryReference- , entryRepostOf :: Maybe EntryReference }+ { entryName ∷ [Text]+ , entrySummary ∷ [Text]+ , entryContent ∷ [ContentReference]+ , entryPublished ∷ [UTCTime]+ , entryUpdated ∷ [UTCTime]+ , entryAuthor ∷ [CardReference]+ , entryCategory ∷ [Text]+ , entryUrl ∷ [Text]+ , entryUid ∷ [Text]+ , entryLocation ∷ [LocationReference]+ , entryComments ∷ [EntryReference]+ , entrySyndication ∷ [Text]+ , entryInReplyTo ∷ [EntryReference]+ , entryLikeOf ∷ [EntryReference]+ , entryRepostOf ∷ [EntryReference] } deriving (Eq, Show, Data, Typeable) instance Default Entry where def = Entry- { entryName = Nothing- , entrySummary = Nothing- , entryContent = Nothing- , entryPublished = Nothing- , entryUpdated = Nothing- , entryAuthor = Nowhere+ { entryName = []+ , entrySummary = []+ , entryContent = []+ , entryPublished = []+ , entryUpdated = []+ , entryAuthor = [] , entryCategory = []- , entryUrl = Nothing- , entryUid = Nothing- , entryLocation = Nothing+ , entryUrl = []+ , entryUid = []+ , entryLocation = [] , entryComments = [] , entrySyndication = []- , entryInReplyTo = Nothing- , entryLikeOf = Nothing- , entryRepostOf = Nothing }+ , entryInReplyTo = []+ , entryLikeOf = []+ , entryRepostOf = [] }
library/Data/Microformats2/Aeson.hs view
@@ -1,5 +1,5 @@ {-# OPTIONS_GHC -fno-warn-orphans #-}-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TemplateHaskell, Trustworthy #-} -- | TH-derived Aeson instances for Data.Microformats2. module Data.Microformats2.Aeson () where@@ -7,7 +7,14 @@ import Data.Microformats2 import Data.Aeson.TH -$(deriveJSON defaultOptions ''Embedded)+-- 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)
library/Data/Microformats2/Setters.hs view
@@ -1,15 +1,12 @@ {-# OPTIONS_GHC -fno-warn-orphans -fno-warn-missing-signatures #-}-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TemplateHaskell, Trustworthy #-} -- | TH-derived Setters instances for Data.Microformats2.-module Data.Microformats2.Setters (- module Data.Microformats2.Setters-) where+module Data.Microformats2.Setters where import Data.Microformats2 import Data.Setters -$(declareSetters ''Embedded) $(declareSetters ''Geo) $(declareSetters ''Adr) $(declareSetters ''Card)
microformats2-types.cabal view
@@ -1,5 +1,5 @@ name: microformats2-types-version: 0.3.0+version: 0.4.0 synopsis: Microformats 2 types (with Aeson instances) category: Web homepage: https://github.com/myfreeweb/microformats2-types@@ -13,7 +13,7 @@ extra-source-files: README.md tested-with:- GHC == 7.8.2+ GHC == 7.8.3 source-repository head type: git@@ -24,10 +24,9 @@ base >= 4.0.0.0 && < 5 , text , time >= 1.4.0 && < 2- , either , aeson , pandoc-types- , data-default+ , data-default-class , setters default-language: Haskell2010 exposed-modules: