From aecf9597eb071fa36d17cee83f7d98b0e3c8506a Mon Sep 17 00:00:00 2001 From: bjorn Date: Mon, 15 Sep 2008 13:33:40 +0000 Subject: Added partial word completion to fastcgi server and update GWT UI accordingly. --- src/server/MainFastCGI.hs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/server/MainFastCGI.hs') diff --git a/src/server/MainFastCGI.hs b/src/server/MainFastCGI.hs index d3c223c92..f4b6a920f 100644 --- a/src/server/MainFastCGI.hs +++ b/src/server/MainFastCGI.hs @@ -10,6 +10,7 @@ import Text.JSON import qualified Codec.Binary.UTF8.String as UTF8 (encodeString) import Control.Monad +import Data.Char import qualified Data.Map as Map import Data.Maybe @@ -128,12 +129,17 @@ complete' pgf input mcat mfrom = complete :: PGF -> PGF.Language -> PGF.Category -> String -> [String] complete pgf from cat input = - let ws = words input - prefix = "" -- FIXME + let (ws,prefix) = tokensAndPrefix input state0 = PGF.initState pgf from cat state = foldl PGF.nextState state0 ws compls = PGF.getCompletions state prefix - in Map.keys compls + in [unwords (ws++[c]) ++ " " | c <- Map.keys compls] + +tokensAndPrefix :: String -> ([String],String) +tokensAndPrefix s | not (null s) && isSpace (last s) = (words s, "") + | null ws = ([],"") + | otherwise = (init ws, last ws) + where ws = words s linearize' :: PGF -> Maybe PGF.Language -> PGF.Tree -> [(PGF.Language,String)] linearize' pgf mto tree = -- cgit v1.2.3