Added partial word completion to fastcgi server and update GWT UI accordingly.

This commit is contained in:
bjorn
2008-09-15 13:33:40 +00:00
parent 3857f4a6a6
commit c2da4129ed
2 changed files with 11 additions and 5 deletions

View File

@@ -10,6 +10,7 @@ import Text.JSON
import qualified Codec.Binary.UTF8.String as UTF8 (encodeString) import qualified Codec.Binary.UTF8.String as UTF8 (encodeString)
import Control.Monad import Control.Monad
import Data.Char
import qualified Data.Map as Map import qualified Data.Map as Map
import Data.Maybe import Data.Maybe
@@ -128,12 +129,17 @@ complete' pgf input mcat mfrom =
complete :: PGF -> PGF.Language -> PGF.Category -> String -> [String] complete :: PGF -> PGF.Language -> PGF.Category -> String -> [String]
complete pgf from cat input = complete pgf from cat input =
let ws = words input let (ws,prefix) = tokensAndPrefix input
prefix = "" -- FIXME
state0 = PGF.initState pgf from cat state0 = PGF.initState pgf from cat
state = foldl PGF.nextState state0 ws state = foldl PGF.nextState state0 ws
compls = PGF.getCompletions state prefix 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 -> Maybe PGF.Language -> PGF.Tree -> [(PGF.Language,String)]
linearize' pgf mto tree = linearize' pgf mto tree =

View File

@@ -34,7 +34,7 @@ public class CompletionOracle extends SuggestOracle {
} }
public String getReplacementString() { public String getReplacementString() {
return string + " "; return string;
} }
} }
@@ -44,7 +44,7 @@ public class CompletionOracle extends SuggestOracle {
public void onCompleteDone(GF.Completions completions) { public void onCompleteDone(GF.Completions completions) {
Collection<CompletionSuggestion> suggestions = new ArrayList<CompletionSuggestion>(); Collection<CompletionSuggestion> suggestions = new ArrayList<CompletionSuggestion>();
for (int i = 0; i < completions.length(); i++) { for (int i = 0; i < completions.length(); i++) {
String text = request.getQuery() + " " + completions.get(i).getText(); String text = completions.get(i).getText();
suggestions.add(new CompletionSuggestion(text)); suggestions.add(new CompletionSuggestion(text));
} }
callback.onSuggestionsReady(request, new SuggestOracle.Response(suggestions)); callback.onSuggestionsReady(request, new SuggestOracle.Response(suggestions));