hgettext 0.1.9 → 0.1.10
raw patch · 2 files changed
+22/−17 lines, 2 filesdep +haskell-src-extsdep −haskell-srcPVP ok
version bump matches the API change (PVP)
Dependencies added: haskell-src-exts
Dependencies removed: haskell-src
API changes (from Hackage documentation)
Files
- hgettext.cabal +3/−2
- src/hgettext.hs +19/−15
hgettext.cabal view
@@ -1,5 +1,5 @@ Name: hgettext-Version: 0.1.9+Version: 0.1.10 Cabal-Version: >= 1.6 License: BSD3@@ -25,5 +25,6 @@ Main-Is: hgettext.hs Extensions: TemplateHaskell Hs-Source-Dirs: src - Build-Depends: base>=3.0.3.0, uniplate, haskell-src+ Build-Depends: base>=3.0.3.0, uniplate, haskell-src-exts+ Other-Modules: Paths_hgettext
src/hgettext.hs view
@@ -1,6 +1,5 @@ -import Language.Haskell.Parser-import Language.Haskell.Syntax+import qualified Language.Haskell.Exts as H import System.Environment import System.Console.GetOpt@@ -13,9 +12,13 @@ import Data.Char import System.FilePath +import Paths_hgettext (version)+import Data.Version (showVersion)+ data Options = Options { outputFile :: String,- keyword :: String+ keyword :: String,+ printVersion :: Bool } deriving Show options :: [OptDescr (Options->Options)]@@ -29,11 +32,14 @@ "use NAME.po instead of messages.po", Option ['k'] ["keyword"] (ReqArg (\d opts -> opts {keyword = d}) "WORD")- "function name, in which wrapped searched words"+ "function name, in which wrapped searched words",+ Option [] ["version"]+ (NoArg (\opts -> opts {printVersion = True}))+ "print version of hgettexts" ] -defaultOptions = Options "messages.po" "__"+defaultOptions = Options "messages.po" "__" False parseArgs :: [String] -> IO (Options, [String]) parseArgs args = @@ -43,8 +49,8 @@ where header = "Usage: hgettext [OPTION] [INPUTFILE] ..." -toTranslate :: String -> ParseResult HsModule -> [(Int, String)]-toTranslate f (ParseOk z) = nub [ (0, s) | HsApp (HsVar (UnQual (HsIdent x))) (HsLit (HsString s)) <- universeBi z, x == f]+toTranslate :: String -> H.ParseResult H.Module -> [(Int, String)]+toTranslate f (H.ParseOk z) = nub [ (0, s) | H.App (H.Var (H.UnQual (H.Ident x))) (H.Lit (H.String s)) <- universeBi z, x == f] toTranslate _ _ = [] -- Create list of messages from a single file@@ -77,16 +83,14 @@ ""] process :: Options -> [String] -> IO ()+process Options{printVersion = True} _ = + putStrLn $ "hgettext, version " ++ (showVersion version)+ 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 >>= \c -> return ("-", c)- read' s = do - c <- readFile s- -- test for literate haskell file- if map toLower (takeExtension s) == ".lhs" - then return (s, either id (\_ -> "") (unlit s c))- else return (s, c)+ writeFile (outputFile opts) $ writePOTFile $ map (\(n,c) -> formatMessages n $ toTranslate (keyword opts) c) t+ where read' "-" = getContents >>= \c -> return ("-", H.parseFileContents c)+ read' f = H.parseFile f >>= \m -> return (f, m) main = getArgs >>= parseArgs >>= uncurry process