[Fencommits] fenfire-hs: a buggy latex2png for a start on latex support

Tuukka Hastrup Tuukka.Hastrup at iki.fi
Fri Mar 9 05:13:31 EET 2007


Fri Mar  9 05:12:51 EET 2007  Tuukka Hastrup <Tuukka.Hastrup at iki.fi>
  * a buggy latex2png for a start on latex support
diff -rN -u old-fenfire-hs-1/fenfire.cabal new-fenfire-hs-1/fenfire.cabal
--- old-fenfire-hs-1/fenfire.cabal	2007-03-09 05:13:30.000000000 +0200
+++ new-fenfire-hs-1/fenfire.cabal	2007-03-09 05:13:30.000000000 +0200
@@ -61,3 +61,11 @@
                 -fno-warn-unused-imports -fno-warn-missing-signatures
                 -fno-warn-orphans -fno-warn-deprecations 
                 -main-is Irc2RDF.main
+
+Executable:     latex2png
+Main-Is:        Latex2Png.hs
+Other-Modules:  Latex2Png
+GHC-Options:    -fglasgow-exts -hide-package haskell98 -Wall 
+                -fno-warn-unused-imports -fno-warn-missing-signatures
+                -fno-warn-orphans -fno-warn-deprecations 
+                -main-is Latex2Png.main
diff -rN -u old-fenfire-hs-1/Latex2Png.hs new-fenfire-hs-1/Latex2Png.hs
--- old-fenfire-hs-1/Latex2Png.hs	1970-01-01 02:00:00.000000000 +0200
+++ new-fenfire-hs-1/Latex2Png.hs	2007-03-09 05:13:30.000000000 +0200
@@ -0,0 +1,66 @@
+
+module Latex2Png where
+
+-- Copyright (c) 2007, Benja Fallenstein, Tuukka Hastrup
+-- This file is part of Fenfire.
+-- 
+-- Fenfire is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU General Public License as published by
+-- the Free Software Foundation; either version 2 of the License, or
+-- (at your option) any later version.
+-- 
+-- Fenfire is distributed in the hope that it will be useful, but WITHOUT
+-- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
+-- Public License for more details.
+-- 
+-- You should have received a copy of the GNU General
+-- Public License along with Fenfire; if not, write to the Free
+-- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+-- MA  02111-1307  USA
+
+import System.Cmd (rawSystem)
+import System.Environment (getArgs)
+import System.Directory (getTemporaryDirectory, setCurrentDirectory, 
+    createDirectory, getDirectoryContents, removeFile, removeDirectory, 
+    doesFileExist)
+import System.IO (openTempFile, openFile, hPutStr, hClose, IOMode(..))
+import System.Exit (ExitCode(..))
+
+import Control.Monad (when)
+
+latex content = unlines [
+    "\\documentclass[12pt]{article}",
+    "\\pagestyle{empty}",
+    "\\usepackage[utf8]{inputenc}",
+    "\\begin{document}",
+    content,
+    "\\end{document}"
+    ]
+
+main = do
+    [code,outfile] <- getArgs
+    handle <- openFile outfile WriteMode
+    tmp <- getTemporaryDirectory
+    let dir = tmp ++ "/latex2png" -- FIXME / and predictable name
+    createDirectory dir
+    setCurrentDirectory dir
+
+    let latexFile = "latex2png-temp"
+    writeFile (latexFile++".tex") $ latex code
+    -- FIXME set environment variables necessary for security, use rlimit
+    ExitSuccess <- rawSystem "latex" ["--interaction=nonstopmode", latexFile++".tex"]
+    ExitSuccess <- rawSystem "dvipng" ["-bgTransparent", "-Ttight", "", "--noghostscript", "-l1", latexFile++".dvi"]
+    
+    png <- readFile $ latexFile++"1.png"
+
+    setCurrentDirectory tmp
+    files <- getDirectoryContents dir
+    flip mapM_ files $ \filename -> do 
+        let file = dir ++ "/" ++ filename -- FIXME /
+        exists <- doesFileExist file
+        when exists $ removeFile $ file
+    removeDirectory dir
+
+    hPutStr handle png
+    hClose handle
diff -rN -u old-fenfire-hs-1/Makefile new-fenfire-hs-1/Makefile
--- old-fenfire-hs-1/Makefile	2007-03-09 05:13:30.000000000 +0200
+++ new-fenfire-hs-1/Makefile	2007-03-09 05:13:30.000000000 +0200
@@ -13,7 +13,7 @@
 PREPROCESSED=$(patsubst %.fhs,%.hs,$(wildcard *.fhs)) \
              $(patsubst %.chs,%.hs,$(wildcard *.chs))
 SOURCES=*.hs *.chs *.fhs $(PREPROCESSED)
-TARGETS=functortest vobtest fenfire darcs2rdf irc2rdf
+TARGETS=functortest vobtest fenfire darcs2rdf irc2rdf latex2png
 
 all: build
 
@@ -32,7 +32,7 @@
 	rm -f $(TARGETS)
 	$(MAKE) all
 
-functortest vobtest fenfire darcs2rdf irc2rdf: build
+functortest vobtest fenfire darcs2rdf irc2rdf latex2png: build
 
 run-functortest: functortest
 run-vobtest: vobtest
@@ -40,6 +40,7 @@
 run-fenfire: fenfire
 run-darcs2rdf: darcs2rdf
 run-irc2rdf: irc2rdf
+run-latex2png: latex2png
 run-%: %
 	./dist/build/$</$< $(ARGS)
 




More information about the Fencommits mailing list