Browse Source

recommitted version functions, rewritten to work with Text and

attoparsec
master
Jon Kristensen 14 years ago
parent
commit
fc74d2df89
  1. 25
      src/Network/XMPP/Utilities.hs

25
src/Network/XMPP/Utilities.hs

@ -15,6 +15,7 @@ import Control.Monad.STM @@ -15,6 +15,7 @@ import Control.Monad.STM
import Control.Concurrent.STM.TVar
import Prelude
import qualified Data.Attoparsec.Text as AP
import qualified Data.Text as Text
@ -60,4 +61,26 @@ idGenerator prefix = atomically $ do @@ -60,4 +61,26 @@ idGenerator prefix = atomically $ do
-- Characters allowed in IDs.
repertoire :: String
repertoire = ['a'..'z']
repertoire = ['a'..'z']
-- Converts a "<major>.<minor>" numeric version number to a @Version@ object.
versionFromString :: Text.Text -> Maybe Version
versionFromString s = case AP.parseOnly versionParser s of
Right version -> Just version
Left _ -> Nothing
-- Constructs a "Version" based on the major and minor version numbers.
versionFromNumbers :: Integer -> Integer -> Version
versionFromNumbers major minor = Version major minor
-- Read numbers, a dot, more numbers, and end-of-file.
versionParser :: AP.Parser Version
versionParser = do
major <- AP.many1 AP.digit
AP.skip (\ c -> c == '.')
minor <- AP.many1 AP.digit
AP.endOfInput
return $ Version (read major) (read minor)
Loading…
Cancel
Save