-------------------------------------------------------------------- -- | -- Module : Text.Atom.Feed.Link -- Copyright : (c) Galois, Inc. 2008, -- (c) Sigbjorn Finne 2009- -- License : BSD3 -- -- Maintainer: Sigbjorn Finne -- Stability : provisional -- Portability: portable -- -------------------------------------------------------------------- module Text.Atom.Feed.Link ( LinkRelation(..) , showLinkRelation , showLinkAttr ) where import Prelude () import Prelude.Compat -- | Atom feeds uses typed IRI links to represent -- information \/ metadata that is of interest to the -- consumers (software, in the main) of feeds. For instance, -- the edit link relation attached to an atom:entry element -- points to the IRI to use to update\/edit it. -- -- The Atom standard encourages that such typed links to -- be registered with IANA if they have wider applicability, -- and the 'LinkRelation' data type encodes the currently -- registered link types (derived from: -- http:\/\/www.iana.org\/assignments\/link-relations.html -- on 2007-10-28] -- data LinkRelation -- relevant RFC: = LinkAlternate -- http://www.rfc-editor.org/rfc/rfc4287.txt | LinkCurrent -- http://www.rfc-editor.org/rfc/rfc5005.txt | LinkEnclosure -- http://www.rfc-editor.org/rfc/rfc4287.txt | LinkEdit -- http://www.rfc-editor.org/rfc/rfc5023.txt | LinkEditMedia -- http://www.rfc-editor.org/rfc/rfc5023.txt | LinkFirst -- http://www.iana.org/assignments/link-relations/first | LinkLast -- http://www.iana.org/assignments/link-relations/last | LinkLicense -- http://www.rfc-editor.org/rfc/rfc4946.txt | LinkNext -- http://www.rfc-editor.org/rfc/rfc5005.txt | LinkNextArchive -- http://www.rfc-editor.org/rfc/rfc5005.txt | LinkPayment -- http://www.iana.org/assignments/link-relations/payment | LinkPrevArchive -- http://www.rfc-editor.org/rfc/rfc5005.txt | LinkPrevious -- http://www.rfc-editor.org/rfc/rfc5005.txt | LinkRelated -- http://www.rfc-editor.org/rfc/rfc4287.txt | LinkReplies -- http://www.rfc-editor.org/rfc/rfc4685.txt | LinkSelf -- http://www.rfc-editor.org/rfc/rfc4287.txt | LinkVia -- http://www.rfc-editor.org/rfc/rfc4287.txt | LinkOther String deriving (Eq, Show) showLinkRelation :: LinkRelation -> String showLinkRelation lr = case lr of LinkAlternate -> "alternate" LinkCurrent -> "current" LinkEnclosure -> "enclosure" LinkEdit -> "edit" LinkEditMedia -> "edit-media" LinkFirst -> "first" LinkLast -> "last" LinkLicense -> "license" LinkNext -> "next" LinkNextArchive -> "next-archive" LinkPayment -> "payment" LinkPrevArchive -> "prev-archive" LinkPrevious -> "previous" LinkRelated -> "related" LinkReplies -> "replies" LinkSelf -> "self" LinkVia -> "via" LinkOther s -> s showLinkAttr :: LinkRelation -> String -> String {-URI-} showLinkAttr lr s = showLinkRelation lr ++ '=' : '"' : concatMap escQ s ++ "\"" where escQ '"' = "&dquot;" escQ x = [x]