-- | https://wiki.debian.org/DebianRepository/Format#Codename

{-# LANGUAGE DeriveDataTypeable, TemplateHaskell #-}

module Debian.Codename
    ( Codename(..)
    , codename
    , parseCodename
    ) where

import Data.Data (Data, Typeable)
import Debian.TH ({-instance Pretty Loc-})
import Network.URI (unEscapeString, escapeURIString, isAllowedInURI)
--import Text.PrettyPrint.HughesPJClass as PP (Pretty(pPrint), text)
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