mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-23 09:52:55 -06:00
PGF web service: switch to the new SVG rendering of word dependency trees
Also added the function outputText in CGIUtils.
This commit is contained in:
@@ -4,7 +4,7 @@ module CGIUtils (throwCGIError, handleCGIErrors,
|
|||||||
stderrToFile,logError,
|
stderrToFile,logError,
|
||||||
outputJSONP,outputEncodedJSONP,
|
outputJSONP,outputEncodedJSONP,
|
||||||
outputPNG,outputBinary,outputBinary',
|
outputPNG,outputBinary,outputBinary',
|
||||||
outputHTML,outputPlain) where
|
outputHTML,outputPlain,outputText) where
|
||||||
|
|
||||||
import Control.Exception(Exception(..),SomeException(..),throw)
|
import Control.Exception(Exception(..),SomeException(..),throw)
|
||||||
import Data.Dynamic(Typeable,cast)
|
import Data.Dynamic(Typeable,cast)
|
||||||
@@ -73,7 +73,7 @@ outputEncodedJSONP json =
|
|||||||
Nothing -> ("json",json)
|
Nothing -> ("json",json)
|
||||||
Just c -> ("javascript",c ++ "(" ++ json ++ ")")
|
Just c -> ("javascript",c ++ "(" ++ json ++ ")")
|
||||||
ct = "application/"++ty++"; charset=utf-8"
|
ct = "application/"++ty++"; charset=utf-8"
|
||||||
outputStrict ct $ UTF8.encodeString str
|
outputText ct str
|
||||||
|
|
||||||
outputPNG :: BS.ByteString -> CGI CGIResult
|
outputPNG :: BS.ByteString -> CGI CGIResult
|
||||||
outputPNG = outputBinary' "image/png"
|
outputPNG = outputBinary' "image/png"
|
||||||
@@ -88,10 +88,12 @@ outputBinary' ct x = do
|
|||||||
outputFPS x
|
outputFPS x
|
||||||
|
|
||||||
outputHTML :: String -> CGI CGIResult
|
outputHTML :: String -> CGI CGIResult
|
||||||
outputHTML = outputStrict "text/html; charset=utf-8" . UTF8.encodeString
|
outputHTML = outputText "text/html; charset=utf-8"
|
||||||
|
|
||||||
outputPlain :: String -> CGI CGIResult
|
outputPlain :: String -> CGI CGIResult
|
||||||
outputPlain = outputStrict "text/plain; charset=utf-8" . UTF8.encodeString
|
outputPlain = outputText "text/plain; charset=utf-8"
|
||||||
|
|
||||||
|
outputText ct = outputStrict ct . UTF8.encodeString
|
||||||
|
|
||||||
outputStrict :: String -> String -> CGI CGIResult
|
outputStrict :: String -> String -> CGI CGIResult
|
||||||
outputStrict ct x | x == x = do setHeader "Content-Type" ct
|
outputStrict ct x | x == x = do setHeader "Content-Type" ct
|
||||||
|
|||||||
@@ -7,8 +7,9 @@ import PGF (PGF)
|
|||||||
import qualified PGF
|
import qualified PGF
|
||||||
import PGF.Lexing
|
import PGF.Lexing
|
||||||
import Cache
|
import Cache
|
||||||
import CGIUtils(outputJSONP,outputPlain,outputHTML,logError,outputBinary,
|
import CGIUtils(outputJSONP,outputPlain,outputHTML,outputText,
|
||||||
outputBinary',handleCGIErrors,throwCGIError,stderrToFile)
|
outputBinary,outputBinary',
|
||||||
|
logError,handleCGIErrors,throwCGIError,stderrToFile)
|
||||||
import CGI(CGI,readInput,getInput,getVarWithDefault,
|
import CGI(CGI,readInput,getInput,getVarWithDefault,
|
||||||
CGIResult,requestAcceptLanguage,handleErrors,setHeader,
|
CGIResult,requestAcceptLanguage,handleErrors,setHeader,
|
||||||
Accept(..),Language(..),negotiate,liftIO)
|
Accept(..),Language(..),negotiate,liftIO)
|
||||||
@@ -777,9 +778,11 @@ parseTree pgf lang opts tree = PGF.graphvizParseTree pgf lang opts tree
|
|||||||
doDepTree path pgf fmt lang tree =
|
doDepTree path pgf fmt lang tree =
|
||||||
do lbls <- either (const Nothing) Just # liftIO (tryIOError readDepLabels)
|
do lbls <- either (const Nothing) Just # liftIO (tryIOError readDepLabels)
|
||||||
let vis = PGF.graphvizDependencyTree fmt False lbls Nothing pgf lang tree
|
let vis = PGF.graphvizDependencyTree fmt False lbls Nothing pgf lang tree
|
||||||
if fmt `elem` ["png","gif","svg","gv"]
|
if fmt `elem` ["png","gif","gv"]
|
||||||
then outputGraphviz vis
|
then outputGraphviz vis
|
||||||
else outputPlain vis
|
else if fmt=="svg"
|
||||||
|
then outputText "image/svg+xml" vis
|
||||||
|
else outputPlain vis
|
||||||
where
|
where
|
||||||
labelsPath = dropExtension path <.> "labels"
|
labelsPath = dropExtension path <.> "labels"
|
||||||
readDepLabels = PGF.getDepLabels . lines # readFile labelsPath
|
readDepLabels = PGF.getDepLabels . lines # readFile labelsPath
|
||||||
|
|||||||
Reference in New Issue
Block a user