{-# LANGUAGE DeriveDataTypeable, TemplateHaskell #-}
module Debian.Codename
( Codename(..)
, codename
, parseCodename
) where
import Data.Data (Data, Typeable)
import Debian.TH ()
import Network.URI (unEscapeString, escapeURIString, isAllowedInURI)
import Text.PrettyPrint (text)
import Distribution.Pretty
data Codename = Codename String deriving (Eq, Ord, Read, Show, Data, Typeable)
parseCodename :: String -> Codename
parseCodename = Codename . unEscapeString
codename :: Codename -> String
codename (Codename s) = escapeURIString isAllowedInURI s
instance Pretty Codename where
pretty (Codename s) = text s