{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
{-# OPTIONS -fno-warn-orphans #-}
module Debian.Version.String
    ( ParseDebianVersion(..)
    ) where

import Text.ParserCombinators.Parsec

import Data.List (stripPrefix)
import Debian.Version.Common
import Debian.Version.Internal

instance ParseDebianVersion String where
    parseDebianVersion str =
        case parse parseDV str str of
          Left e -> error (show e)
          Right dv -> DebianVersion str dv

instance Read DebianVersion where
    readsPrec _ s =
        case stripPrefix "Debian.Version.parseDebianVersion " s of
          Just s' -> case reads s' :: [(String, String)] of
                       []-> []
                       (v, s'') : _ -> [(parseDebianVersion v, s'')]
          Nothing -> []