diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/PGFService.hs | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/src/server/PGFService.hs b/src/server/PGFService.hs index fa515e018..5817be7f0 100644 --- a/src/server/PGFService.hs +++ b/src/server/PGFService.hs @@ -159,7 +159,7 @@ cpgfMain qsem command (t,(pgf,pc)) = "c-translate" -> withQSem qsem $ out t=<<join(trans # input % to % start % limit%treeopts) "c-lookupmorpho"-> out t=<< morpho # from1 % textInput - "c-lookupcohorts"->out t=<< cohorts # from1 % getInput "longest" % textInput + "c-lookupcohorts"->out t=<< cohorts # from1 % getInput "filter" % textInput "c-flush" -> out t=<< flush "c-grammar" -> out t grammar "c-abstrtree" -> outputGraphviz=<< C.graphvizAbstractTree pgf C.graphvizDefaults # tree @@ -251,29 +251,20 @@ cpgfMain qsem command (t,(pgf,pc)) = ,"prob".=p] | (l,a,p)<-C.lookupMorpho concr input] - cohorts (from,concr) longest input = + cohorts (from,concr) filter input = showJSON [makeObj ["start" .=showJSON s + ,"word" .=showJSON w ,"morpho".=showJSON [makeObj ["lemma".=l ,"analysis".=a ,"prob".=p] | (l,a,p)<-ms] ,"end" .=showJSON e ] - | (s,ms,e) <- (if longest==Just "true" then filterLongest else id) - (C.lookupCohorts concr input)] - where - filterLongest [] = [] - filterLongest (an:ans) = longest an ans - where - longest prev [] = [prev] - longest prev@(start0,_,end0) (next@(start,an,end):ans) - | start0 == start = longest next ans - | otherwise = prev : filter end0 (next:ans) - - filter end [] = [] - filter end (next@(start,_,_):ans) - | end <= start = filterLongest (next:ans) - | otherwise = filter end ans + | (s,w,ms,e) <- (case filter of + Just "longest" -> C.filterLongest + Just "best" -> C.filterBest + _ -> id) + (C.lookupCohorts concr input)] wordforword input@((from,_),_) = jsonWFW from . wordforword' input |
