{-# OPTIONS -fno-warn-orphans #-}
module Debian.Version.ByteString
    ( ParseDebianVersion(..)
    ) where

import Text.ParserCombinators.Parsec

import qualified Data.ByteString.Char8 as C

import Debian.Version.Common
import Debian.Version.Internal

instance ParseDebianVersion C.ByteString where
    parseDebianVersion :: ByteString -> Either ParseError DebianVersion
parseDebianVersion ByteString
byteStr =
        let str :: [Char]
str = ByteString -> [Char]
C.unpack ByteString
byteStr in
        case Parsec [Char] () (Found Int, NonNumeric, Found NonNumeric)
-> [Char]
-> [Char]
-> Either ParseError (Found Int, NonNumeric, Found NonNumeric)
forall s t a.
Stream s Identity t =>
Parsec s () a -> [Char] -> s -> Either ParseError a
parse Parsec [Char] () (Found Int, NonNumeric, Found NonNumeric)
parseDV [Char]
str [Char]
str of
          Left ParseError
e -> ParseError -> Either ParseError DebianVersion
forall a b. a -> Either a b
Left ParseError
e
          Right (Found Int, NonNumeric, Found NonNumeric)
dv -> DebianVersion -> Either ParseError DebianVersion
forall a b. b -> Either a b
Right ([Char]
-> (Found Int, NonNumeric, Found NonNumeric) -> DebianVersion
DebianVersion [Char]
str (Found Int, NonNumeric, Found NonNumeric)
dv)