module WASH.CGI.LogEntry where
import WASH.CGI.RawCGITypes
data PARAMETER
= PAR_RESULT String
| PAR_VALUES CGIParameters
| PAR_MARK String
| PAR_IGNORED
| PAR_TRANS String
| PAR_CRE_TV String String
| PAR_REM_TV String
| PAR_GET_TV String String
| PAR_SET_TV String String
| PAR_DB String
instance Show PARAMETER where
showsPrec i par = case par of
PAR_RESULT str -> showString ":R" . shows str
PAR_VALUES cps -> showString ":V" . shows cps
PAR_MARK str -> showString ":M" . shows str
PAR_IGNORED -> showString ":I"
PAR_TRANS str -> showString ":T" . shows str
PAR_CRE_TV n v -> showString ":C" . shows n . shows v
PAR_REM_TV n -> showString ":E" . shows n
PAR_GET_TV n v -> showString ":G" . shows n . shows v
PAR_SET_TV n v -> showString ":S" . shows n . shows v
PAR_DB str -> showString ":D" . shows str
instance Read PARAMETER where
readsPrec i str = case str of
':' : rest -> g rest
_ -> []
where g ('R' : str) = [(PAR_RESULT v, rest) | (v, rest) <- reads str]
g ('V' : str) = [(PAR_VALUES v, rest) | (v, rest) <- reads str]
g ('M' : str) = [(PAR_MARK v, rest) | (v, rest) <- reads str]
g ('I' : str) = [(PAR_IGNORED, str)]
g ('T' : str) = [(PAR_TRANS v, rest) | (v, rest) <- reads str]
g ('C' : str) = [(PAR_CRE_TV n v, rest)
|(n, str1) <- reads str, (v, rest) <- reads str1]
g ('E' : str) = [(PAR_REM_TV n, rest)
|(n, rest) <- reads str]
g ('G' : str) = [(PAR_GET_TV n v, rest)
|(n, str1) <- reads str, (v, rest) <- reads str1]
g ('S' : str) = [(PAR_SET_TV n v, rest)
|(n, str1) <- reads str, (v, rest) <- reads str1]
g ('D' : str) = [(PAR_DB v, rest) | (v, rest) <- reads str]
g _ = []