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 +1/−1
- src/Text/I18N/GetText.hs +14/−4
- src/hgettext.hs +8/−2
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