module Text.VCard.Types
( Version(..), ExtraValue(..), VCard(..)
, VCardValue, VProperty, SourceName ) where
import qualified Data.Map as Map
import qualified Codec.MIME.ContentType.Text.Directory as D
import qualified Data.ByteString.Lazy.Char8 as B
import qualified Data.ByteString.Lazy.Char8.Caseless as I
data Version = Version
{ version_major :: Int
, version_minor :: Int }
deriving Show
data ExtraValue = Struct [[B.ByteString]]
| Binary B.ByteString
| PhoneNumber B.ByteString
| UTCOffset { utcOffset_sign :: Char
, utcOffset_hours :: Int
, utcOffset_minutes :: Int
}
| SubVCard VCard
deriving Show
type VCardValue = D.Value ExtraValue
type VProperty = D.Property ExtraValue
type SourceName = String
data VCard = VCard
{ vcard_version :: Version
, vcard_properties :: Map.Map I.ByteString [VProperty] }
deriving Show