packages feed

hgettext 0.1.6 → 0.1.8

raw patch · 3 files changed

+23/−7 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Text.I18N.GetText: bindTextDomain :: String -> Maybe String -> IO (Maybe String)
+ Text.I18N.GetText: bindTextDomain :: String -> Maybe String -> IO String
- Text.I18N.GetText: textDomain :: Maybe String -> IO (Maybe String)
+ Text.I18N.GetText: textDomain :: Maybe String -> IO String

Files

hgettext.cabal view
@@ -1,5 +1,5 @@ Name:                   hgettext-Version:                0.1.6+Version:                0.1.8 Cabal-Version:          >= 1.6  License:                BSD3
src/Text/I18N/GetText.hs view
@@ -13,6 +13,7 @@  import Foreign.C.Types import Foreign.C.String+import Foreign.C.Error import Foreign.Ptr import Data.Maybe (fromMaybe) import System.Locale.SetLocale@@ -46,6 +47,10 @@ fromCString x | x == nullPtr = return Nothing               | otherwise = peekCString x >>= return . Just +fromCStringError :: String -> CString -> IO String+fromCStringError err x | x == nullPtr = throwErrno err+                       | otherwise = peekCString x+ fromCStringDefault :: String -> CString -> IO String fromCStringDefault d x = fromCString x >>= \r -> return (fromMaybe d r) @@ -158,19 +163,24 @@ -- |bindTextDomain sets the base directory of the hierarchy -- containing message catalogs for a given message domain. --+-- Throws 'IOError' if fails+-- bindTextDomain :: String        -- ^ domain name                -> Maybe String  -- ^ path to the locale folder or 'Nothing' to return                                 -- base directory for domain-               -> IO (Maybe String) -- ^ return value+               -> IO String     -- ^ return value bindTextDomain domainname dirname =    withCString domainname $ \domain ->        withCStringMaybe dirname $ \dir ->-          c_bindtextdomain domain dir >>= fromCString+          c_bindtextdomain domain dir >>= fromCStringError "bindTextDomain fails"  -- |textDomain sets domain for future 'getText' call+--+-- Throws 'IOError' if fails+--  textDomain :: Maybe String      -- ^ domain name, if 'Nothing' than returns                                 -- current domain name-           -> IO (Maybe String) -- ^ return value+           -> IO String         -- ^ return value textDomain domainname =      withCStringMaybe domainname $ \domain ->-        c_textdomain domain >>= fromCString+        c_textdomain domain >>= fromCStringError "textDomain fails"
src/hgettext.hs view
@@ -7,6 +7,8 @@  import Data.Generics.PlateData +import Distribution.Simple.PreProcess.Unlit+ import Data.List  data Options = Options {@@ -76,8 +78,12 @@ process opts fl = do   t <- mapM read' fl   writeFile (outputFile opts) $ writePOTFile $ map (\(n,c) -> formatMessages n $ toTranslate (keyword opts) $ parseModule c) t-    where read' "-" = getContents >>= \s -> return ("-", s)-          read' s = readFile s >>= \c -> return (s, c)+    where read' "-" = do +                    s <- getContents+                    return ("-", either id (\_ -> "") (unlit "-" s))+          read' s = do +                    c <- readFile s+                    return (s, either id (\_ -> "") (unlit s c))  main =      getArgs >>= parseArgs >>= uncurry process