From 255b5488f453efdfefd4edaed2ce2eeb1a8d545c Mon Sep 17 00:00:00 2001 From: bjorn Date: Mon, 18 Aug 2008 09:38:21 +0000 Subject: [PATCH] Updated AJAX translator to make use of canParse and the fixed parseAllLangs. --- src/server/MainFastCGI.hs | 26 ++++++++++++++++++++------ src/server/gf-client.html | 8 +++++--- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/server/MainFastCGI.hs b/src/server/MainFastCGI.hs index c363aea7b..5987f1e6d 100644 --- a/src/server/MainFastCGI.hs +++ b/src/server/MainFastCGI.hs @@ -44,7 +44,7 @@ cgiMain pgf = mto <- getLang pgf "to" outputJSON $ translate pgf input mcat mfrom mto "/categories" -> outputJSON $ PGF.categories pgf - "/languages" -> outputJSON $ PGF.languages pgf + "/languages" -> outputJSON $ toJSObject $ listLanguages pgf _ -> outputNotFound path getCat :: PGF -> String -> CGI (Maybe PGF.Category) @@ -75,12 +75,26 @@ outputStrict x | x == x = output x translate :: PGF -> String -> Maybe PGF.Category -> Maybe PGF.Language -> Maybe PGF.Language -> Translation translate pgf input mcat mfrom mto = - Record [(from, [Record [(to, PGF.linearize pgf to tree) | to <- toLangs] | tree <- trees]) - | from <- fromLangs, let trees = PGF.parse pgf from cat input, not (null trees)] - where cat = fromMaybe (PGF.startCat pgf) mcat - fromLangs = maybe (PGF.languages pgf) (:[]) mfrom - toLangs = maybe (PGF.languages pgf) (:[]) mto + Record [(from,[Record (linearize' pgf mto tree) | tree <- trees]) + | (from,trees) <- parse' pgf input mcat mfrom] +parse' :: PGF -> String -> Maybe PGF.Category -> Maybe PGF.Language -> [(PGF.Language,[PGF.Tree])] +parse' pgf input mcat mfrom = + case mfrom of + Nothing -> PGF.parseAllLang pgf cat input + Just from -> [(from, PGF.parse pgf from cat input)] + where cat = fromMaybe (PGF.startCat pgf) mcat + +linearize' :: PGF -> Maybe PGF.Language -> PGF.Tree -> [(PGF.Language,String)] +linearize' pgf mto tree = + case mto of + Nothing -> PGF.linearizeAllLang pgf tree + Just to -> [(to,PGF.linearize pgf to tree)] + +listLanguages :: PGF -> [(PGF.Language,JSObject JSValue)] +listLanguages pgf = [(l,toJSObject (info l)) | l <- PGF.languages pgf] + where info l = [("languageCode", showJSON (fromMaybe "" (PGF.languageCode pgf l))), + ("canParse", showJSON (PGF.canParse pgf l))] -- * General CGI Error exception mechanism diff --git a/src/server/gf-client.html b/src/server/gf-client.html index a50049878..36979f581 100644 --- a/src/server/gf-client.html +++ b/src/server/gf-client.html @@ -23,8 +23,10 @@ var f = document.getElementById('fromLang'); var t = document.getElementById('toLang'); for (var i in langs) { - addOption(f, langs[i], langs[i]); - addOption(t, langs[i], langs[i]); + if (langs[i].canParse) { + addOption(f, i, i); + } + addOption(t, i, i); } } @@ -32,7 +34,7 @@ gf.getLanguages(populateLangs); } - Web-based GF Translator + AJAX GF Translator