packages feed

xournal-convert 0.1.0 → 0.1.1

raw patch · 4 files changed

+97/−70 lines, 4 filesdep +bytestringdep ~xournal-parserdep ~xournal-renderdep ~xournal-types

Dependencies added: bytestring

Dependency ranges changed: xournal-parser, xournal-render, xournal-types

Files

lib/Application/XournalConvert/Command.hs view
@@ -4,9 +4,9 @@ import Application.XournalConvert.Job  commandLineProcess :: Xournal_convert -> IO ()-commandLineProcess Test = do -  putStrLn "test called"-  startJob+-- commandLineProcess Test = do +--   putStrLn "test called"+--   startJob commandLineProcess (MakeSVG fname mdest) = do    putStrLn "makeSVG is called"   startMakeSVG fname mdest
+ lib/Application/XournalConvert/Convert/MakeSVG.hs view
@@ -0,0 +1,72 @@+{-# LANGUAGE ScopedTypeVariables #-}++module Application.XournalConvert.Convert.MakeSVG where++import Data.List +import Graphics.Xournal.Render.Simple+import Graphics.Rendering.Cairo++import Data.Xournal.Simple+import Text.Xournal.Parse++import Text.StringTemplate++import System.Directory +import System.FilePath+import System.IO+import qualified Data.ByteString.Lazy as B++import Paths_xournal_convert++makeSVGFromXournal :: Xournal -> FilePath -> FilePath +                   -> IO [String] +makeSVGFromXournal xojcontent fname dest = do +  let fnamebase = takeBaseName fname +  let pages = xoj_pages xojcontent+      names = map (svgFileName fnamebase) [1..]+      namePages = zip names pages +  let Dim w h = page_dim (head pages)+  let svgoutfn x = withSVGSurface (dest </> fst x) w h (\s -> renderWith s (cairoDrawPage (snd x)))++  mapM_ svgoutfn namePages+  makeHtmlJavascriptPage (dest </> "index.html") $ zip [1..] (map fst namePages)+  return (map fst namePages )++++render1 :: [(String,String)] -> String -> String+render1 attribs tmpl = render . setManyAttrib attribs . newSTMP $ tmpl++svgFileName :: String -> Int -> String +svgFileName fname_wo_ext pnum =+  fname_wo_ext ++ "_Page_" ++ show pnum <.> "svg"++checkIfBinary :: FilePath -> IO Bool +checkIfBinary fname = +  withFile fname ReadMode $ \h -> do+    b <- return . B.any ( == 0 ) .  B.take 100 =<< B.hGetContents h +    b `seq` return b +   +ifThenElse :: Bool -> a -> a -> a +ifThenElse b tact fact = if b then tact else fact ++onePageTemplate :: String +onePageTemplate = "<p><div class=\"page\"> <a name=\"$page$\"> <img src=\"$filename$\" width=100% /> </a> </div> </p>\n\n"++onerule :: String +onerule = "<hr /> \n"++makeHtmlJavascriptPage :: FilePath -> [(Int,String)] -> IO ()+makeHtmlJavascriptPage fname names = do+  putStrLn $ "writing  " ++ fname+  putStrLn $ show names +  templateDir <- getDataDir >>= return . (</> "template")+  indexhtmlst <- readFile (templateDir </> "index.html.st")+  let mkstr :: (Int,String) -> String +      mkstr (p,n) = flip render1 onePageTemplate [ ("filename", "." </> n) +                                                 , ("page", show p) ]+      bodystr = intercalate onerule . map mkstr $ names+  let str = flip render1 indexhtmlst [ ("body", bodystr) ] +  withFile fname WriteMode $ \h -> do +    hPutStr h str+    
lib/Application/XournalConvert/Job.hs view
@@ -2,73 +2,26 @@  module Application.XournalConvert.Job where -import Data.List -import Graphics.Xournal.Render.Simple-import Graphics.Rendering.Cairo--import Data.Xournal.Simple-import Text.Xournal.Parse--import Text.StringTemplate- import System.Directory -import System.FilePath-import System.IO--import Paths_xournal_convert--render1 :: [(String,String)] -> String -> String-render1 attribs tmpl = render . setManyAttrib attribs . newSTMP $ tmpl--svgFileName :: String -> Int -> String -svgFileName fname_wo_ext pnum =-  fname_wo_ext ++ "_Page_" ++ show pnum <.> "svg"---startJob :: IO () -startJob = do -  putStrLn "job started"--+import Data.Xournal.Simple+-- import Text.Xournal.Parse+import Text.Xournal.Parse.Enumerator +import Application.XournalConvert.Convert.MakeSVG +-- |   startMakeSVG :: FilePath -> Maybe FilePath -> IO ()  startMakeSVG fname mdest = do -  xojcontent <- read_xournal fname -  cdir <- getCurrentDirectory -  let dest = maybe cdir id mdest +  exojcontent <- parseXournal fname +  case exojcontent of +    Left err -> putStrLn $ "parsing error : " ++ err +    Right xojcontent -> do +      cdir <- getCurrentDirectory +      let dest = maybe cdir id mdest +      makeSVGFromXournal xojcontent fname dest +      return () -  -- setCurrentDirectory dest -  let --  (fname_wo_ext,_fname_ext) = splitExtension fname -      fnamebase = takeBaseName fname  -  let pages = xoj_pages xojcontent-      names = map (svgFileName fnamebase) [1..]-      namePages = zip names pages -  let Dim w h = page_dim (head pages)-  let svgoutfn x = withSVGSurface (dest </> fst x) w h (\s -> renderWith s (cairoDrawPage (snd x)))--  mapM_ svgoutfn namePages-  makeHtmlJavascriptPage (dest </> "index.html") $ zip [1..] (map fst namePages)-  putStrLn "test ended"--onePageTemplate :: String -onePageTemplate = "<p><div class=\"page\"> <a name=\"$page$\"> <img src=\"$filename$\" width=100% /> </a> </div> </p>\n\n"--onerule :: String -onerule = "<hr /> \n"+  -- xojcontent <- checkIfBinary fname >>= \b -> +  --                 ifThenElse b (read_xojgz fname) (read_xournal fname) -makeHtmlJavascriptPage :: FilePath -> [(Int,String)] -> IO ()-makeHtmlJavascriptPage fname names = do-  putStrLn $ "writing  " ++ fname-  putStrLn $ show names -  templateDir <- getDataDir >>= return . (</> "template")-  indexhtmlst <- readFile (templateDir </> "index.html.st")-  let mkstr :: (Int,String) -> String -      mkstr (p,n) = flip render1 onePageTemplate [ ("filename", "." </> n) -                                                 , ("page", show p) ]-      bodystr = intercalate onerule . map mkstr $ names-  let str = flip render1 indexhtmlst [ ("body", bodystr) ] -  withFile fname WriteMode $ \h -> do -    hPutStr h str-    
xournal-convert.cabal view
@@ -1,5 +1,5 @@ Name:		xournal-convert-Version:	0.1.0+Version:	0.1.1 Synopsis:	convert utility for xoj files Description: 	convert xoj files into various formats (SVG,SVG+index.html..)  Homepage:       http://ianwookim.org/hxournal@@ -39,15 +39,17 @@                    filepath == 1.2.*,                    cmdargs >= 0.7 && < 0.10,                     HStringTemplate == 0.6.*,-                   xournal-types == 0.2.*,-                   xournal-parser == 0.3.*, -                   xournal-render == 0.4.*, -                   cairo == 0.12.*+                   xournal-types == 0.4.*,+                   xournal-parser >= 0.4.1 && < 0.5, +                   xournal-render == 0.6.*, +                   cairo == 0.12.*, +                   bytestring == 0.9.*    Exposed-Modules:                     Application.XournalConvert.ProgType                    Application.XournalConvert.Job                    Application.XournalConvert.Command+                   Application.XournalConvert.Convert.MakeSVG   Other-Modules:                     Paths_xournal_convert