configurator 0.1.0.0 → 0.2.0.0
raw patch · 7 files changed
+68/−32 lines, 7 filesdep +attoparsecdep −attoparsec-textdep ~hashablePVP ok
version bump matches the API change (PVP)
Dependencies added: attoparsec
Dependencies removed: attoparsec-text
Dependency ranges changed: hashable
API changes (from Hackage documentation)
- Data.Configurator.Types: Number :: Integer -> Value
+ Data.Configurator.Types: Number :: Rational -> Value
Files
- Data/Configurator.hs +8/−2
- Data/Configurator/Instances.hs +44/−14
- Data/Configurator/Parser.hs +2/−2
- Data/Configurator/Types.hs +1/−1
- Data/Configurator/Types/Internal.hs +2/−2
- README.markdown +4/−4
- configurator.cabal +7/−7
Data/Configurator.hs view
@@ -5,7 +5,7 @@ -- Module: Data.Configurator -- Copyright: (c) 2011 MailRank, Inc. -- License: BSD3--- Maintainer: Bryan O'Sullivan <bos@mailrank.com>+-- Maintainer: Bryan O'Sullivan <bos@serpentine.com> -- Stability: experimental -- Portability: portable --@@ -72,6 +72,8 @@ import Data.Monoid (mconcat) import Data.Text.Lazy.Builder (fromString, fromText, toLazyText) import Data.Text.Lazy.Builder.Int (decimal)+import Data.Text.Lazy.Builder.RealFloat (realFloat)+import Data.Ratio (denominator, numerator) import Prelude hiding (catch, lookup) import System.Environment (getEnv) import System.IO (hPutStrLn, stderr)@@ -291,7 +293,11 @@ interpret (Interpolate name) = case H.lookup name env of Just (String x) -> return (fromText x)- Just (Number n) -> return (decimal n)+ Just (Number r)+ | denominator r == 1 -> return (decimal $ numerator r)+ | otherwise -> return $ realFloat (fromRational r :: Double)+ -- TODO: Use a dedicated Builder for Rationals instead of+ -- using realFloat on a Double. Just _ -> error "type error" _ -> do e <- try . getEnv . T.unpack $ name
Data/Configurator/Instances.hs view
@@ -5,9 +5,13 @@ import Control.Applicative import Data.Configurator.Types.Internal+import Data.Complex (Complex)+import Data.Fixed (Fixed, HasResolution) import Data.Int (Int8, Int16, Int32, Int64) import Data.Text.Encoding (encodeUtf8)+import Data.Ratio (Ratio, denominator, numerator) import Data.Word (Word, Word8, Word16, Word32, Word64)+import Foreign.C.Types (CDouble, CFloat) import qualified Data.ByteString as B import qualified Data.ByteString.Lazy as LB import qualified Data.Text as T@@ -20,42 +24,68 @@ convert (Bool v) = Just v convert _ = Nothing -convertNumber :: (Num a) => Value -> Maybe a-convertNumber (Number v) = Just (fromIntegral v)-convertNumber _ = Nothing+convertNumberToNum :: (Num a) => Value -> Maybe a+convertNumberToNum (Number r)+ | denominator r == 1 = Just $ fromInteger $ numerator r+convertNumberToNum _ = Nothing instance Configured Int where- convert = convertNumber+ convert = convertNumberToNum instance Configured Integer where- convert = convertNumber+ convert = convertNumberToNum instance Configured Int8 where- convert = convertNumber+ convert = convertNumberToNum instance Configured Int16 where- convert = convertNumber+ convert = convertNumberToNum instance Configured Int32 where- convert = convertNumber+ convert = convertNumberToNum instance Configured Int64 where- convert = convertNumber+ convert = convertNumberToNum instance Configured Word where- convert = convertNumber+ convert = convertNumberToNum instance Configured Word8 where- convert = convertNumber+ convert = convertNumberToNum instance Configured Word16 where- convert = convertNumber+ convert = convertNumberToNum instance Configured Word32 where- convert = convertNumber+ convert = convertNumberToNum instance Configured Word64 where- convert = convertNumber+ convert = convertNumberToNum++convertNumberToFractional :: (Fractional a) => Value -> Maybe a+convertNumberToFractional (Number r) = Just $ fromRational r+convertNumberToFractional _ = Nothing++instance Configured Double where+ convert = convertNumberToFractional++instance Configured Float where+ convert = convertNumberToFractional++instance Configured CDouble where+ convert = convertNumberToFractional++instance Configured CFloat where+ convert = convertNumberToFractional++instance Integral a => Configured (Ratio a) where+ convert = convertNumberToFractional++instance RealFloat a => Configured (Complex a) where+ convert = convertNumberToFractional++instance HasResolution a => Configured (Fixed a) where+ convert = convertNumberToFractional instance Configured T.Text where convert (String v) = Just v
Data/Configurator/Parser.hs view
@@ -4,7 +4,7 @@ -- Module: Data.Configurator.Parser -- Copyright: (c) 2011 MailRank, Inc. -- License: BSD3--- Maintainer: Bryan O'Sullivan <bos@mailrank.com>+-- Maintainer: Bryan O'Sullivan <bos@serpentine.com> -- Stability: experimental -- Portability: portable --@@ -84,7 +84,7 @@ , string "true" *> pure (Bool True) , string "false" *> pure (Bool False) , String <$> string_- , Number <$> decimal+ , Number <$> rational , List <$> brackets '[' ']' ((value <* skipLWS) `sepBy` (char ',' <* skipLWS)) ]
Data/Configurator/Types.hs view
@@ -2,7 +2,7 @@ -- Module: Data.Configurator.Types -- Copyright: (c) 2011 MailRank, Inc. -- License: BSD3--- Maintainer: Bryan O'Sullivan <bos@mailrank.com>+-- Maintainer: Bryan O'Sullivan <bos@serpentine.com> -- Stability: experimental -- Portability: portable --
Data/Configurator/Types/Internal.hs view
@@ -4,7 +4,7 @@ -- Module: Data.Configurator.Types.Internal -- Copyright: (c) 2011 MailRank, Inc. -- License: BSD3--- Maintainer: Bryan O'Sullivan <bos@mailrank.com>+-- Maintainer: Bryan O'Sullivan <bos@serpentine.com> -- Stability: experimental -- Portability: portable --@@ -201,7 +201,7 @@ -- -- * @\\u@/xxxx/@\\u@/xxxx/ - Unicode character (as two -- UTF-16 surrogates)- | Number Integer+ | Number Rational -- ^ Integer. | List [Value] -- ^ Heterogeneous list. Represented in a configuration
README.markdown view
@@ -29,11 +29,11 @@ and other improvements. Please report bugs via the-[github issue tracker](http://github.com/mailrank/configurator/issues).+[github issue tracker](http://github.com/bos/configurator/issues). -Master [git repository](http://github.com/mailrank/configurator):+Master [git repository](http://github.com/bos/configurator): -* `git clone git://github.com/mailrank/configurator.git`+* `git clone git://github.com/bos/configurator.git` There's also a [Mercurial mirror](http://bitbucket.org/bos/configurator): @@ -45,4 +45,4 @@ ------- This library is written and maintained by Bryan O'Sullivan,-<bos@mailrank.com>.+<bos@serpentine.com>.
configurator.cabal view
@@ -1,17 +1,17 @@ name: configurator-version: 0.1.0.0+version: 0.2.0.0 license: BSD3 license-file: LICENSE category: Configuration, Data copyright: Copyright 2011 MailRank, Inc.-author: Bryan O'Sullivan <bos@mailrank.com>-maintainer: Bryan O'Sullivan <bos@mailrank.com>+author: Bryan O'Sullivan <bos@serpentine.com>+maintainer: Bryan O'Sullivan <bos@serpentine.com> stability: experimental tested-with: GHC == 7.0.3 synopsis: Configuration management cabal-version: >= 1.8-homepage: http://github.com/mailrank/configurator-bug-reports: http://github.com/mailrank/configurator/issues+homepage: http://github.com/bos/configurator+bug-reports: http://github.com/bos/configurator/issues build-type: Simple description: A configuration management library for programs and daemons.@@ -55,7 +55,7 @@ Data.Configurator.Types.Internal build-depends:- attoparsec-text >= 0.8.5.1,+ attoparsec >= 0.10.0.2, base == 4.*, bytestring, directory,@@ -72,7 +72,7 @@ source-repository head type: git- location: http://github.com/mailrank/configurator+ location: http://github.com/bos/configurator source-repository head type: mercurial