Skip to content

Commit

Permalink
Be much less verbose:
Browse files Browse the repository at this point in the history
  • Loading branch information
yamadapc committed May 29, 2017
1 parent 53edaea commit aed68d6
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 10 deletions.
44 changes: 36 additions & 8 deletions bin/Main.hs
Original file line number Diff line number Diff line change
@@ -1,21 +1,49 @@
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RecordWildCards #-}
module Main where

import Data.Maybe
import Data.Monoid
import qualified Data.Text.IO as Text (hPutStr)
import System.Environment (getArgs)
import qualified Data.Text.IO as Text (hPutStr)
import System.Environment (getArgs)
import System.IO

import Options.Applicative
import Text.JaTex

data Options = Options { optsOutputFile :: Maybe FilePath
, optsTemplateFile :: Maybe String
, optsInputFile :: FilePath
}

options :: Parser Options
options =
Options <$>
optional
(strOption
(long "output" <> metavar "OUTPUT_FILE" <> help "LaTeX Output File")) <*>
optional
(strOption
(long "template" <> metavar "TEMPLATE_FILE" <> help "Template File")) <*>
argument str (metavar "INPUT_FILE" <> help "XML Input File")

optionsPI :: ParserInfo Options
optionsPI =
info
(options <**> helper)
(fullDesc <> progDesc "Convert JATS-XML INPUT_FILE to LaTeX OUTPUT_FILE"
<> header "jats2tex - Customizable JATS to LaTeX Conversion")

main :: IO ()
main = getArgs >>= \case
[inputFile, outputFile] -> run inputFile =<< openFile outputFile WriteMode
[inputFile] -> run inputFile stdout
_ -> error "Usage: jatex <input-file> <output-file>"
main = do
Options{..} <- execParser optionsPI
outputFile <- case optsOutputFile of
Nothing -> return stdout
Just f -> openFile f WriteMode
run optsInputFile outputFile

run :: FilePath -> Handle -> IO ()
run inputFile outputHandle = do
hPutStrLn stderr ("Using " <> inputFile <> " writting " <> show outputHandle)
-- hPutStrLn stderr ("Using " <> inputFile <> " writting " <> show outputHandle)
contents <- readJats inputFile
Text.hPutStr outputHandle (jatsXmlToLaTeXText contents)
10 changes: 10 additions & 0 deletions examples/simple.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<article-meta>
<title-group>
<article-title xml:lang="pt"><![CDATA[A influência do genótipo da ECA sobre a aptidão cardiovascular de jovens do sexo masculino moderadamente ativos]]></article-title>
<article-title xml:lang="en"><![CDATA[The influence of ACE genotype on cardiovascular fitness of moderately active young men]]></article-title>
</title-group>
</article-meta>
</front>
</article>
4 changes: 2 additions & 2 deletions src/Text/JaTex.hs
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ runJaTeX = runLaTeXT
readJats :: FilePath -> IO JATSDoc
readJats inputFile = do
inp <- ByteString.readFile inputFile
print ICU.converterNames
-- print ICU.converterNames
inp' <- decodeLatin inp
print (map fromXMLNode (parseJATS inp') :: [Maybe JATSElement])
-- print (map fromXMLNode (parseJATS inp') :: [Maybe JATSElement])
return $ parseJATS inp'
where
decodeLatin i = do
Expand Down

0 comments on commit aed68d6

Please sign in to comment.