diff --git a/src/www/gfmorpho/GFMorpho.hs b/src/www/gfmorpho/GFMorpho.hs index e01d1da56..0b7edb893 100644 --- a/src/www/gfmorpho/GFMorpho.hs +++ b/src/www/gfmorpho/GFMorpho.hs @@ -72,13 +72,17 @@ cleanTablePlain = map clean where clean w = case w of "=>" -> "\t" "s" -> "" - "." -> "" + "." -> "" _ -> cleanw w cleanw = filter (flip notElem "()") -grep oo wss = filter (\ws -> all (flip matchIn ws) (map tail oo)) wss +grep oo wss = filter (\ws -> all (flip matchIn ws) oo) wss -matchIn p ws = any (match p) ws where +matchIn p ws = quant (matchPol pol patt) ws where + quant = if pol then any else all + (pol,patt) = (head p == '-', tail p) + matchPol True p w = match p w + matchPol False p w = not (match p w) match p w = case (p,w) of ('*':ps,_ ) -> any (match ps) [drop i w | i <- [0..length w]] --- (c:ps, d:ws) -> c == d && match ps ws @@ -87,7 +91,7 @@ matchIn p ws = any (match p) ws where tmpFile = "_gfmorpho.tmp" tmpCommand = "_gfcommand.tmp" -isOption = (=='-') . head +isOption = (flip elem "-~") . head tag t s = "<" ++ t ++ ">" ++ s ++ "" diff --git a/src/www/gfmorpho/gfmorpho.cgi b/src/www/gfmorpho/gfmorpho.cgi index c08a9450c..6c47da9a5 100644 --- a/src/www/gfmorpho/gfmorpho.cgi +++ b/src/www/gfmorpho/gfmorpho.cgi @@ -3,5 +3,5 @@ echo "Content-type: text/html"; echo "" export LANG=en_US.UTF-8 -runghc GFMorpho "$QUERY_STRING" - +export GF_LIB_PATH=/home/aarne/GF/lib/ +/usr/local/bin/runghc GFMorpho "$QUERY_STRING" diff --git a/src/www/gfmorpho/gfmorpho.html b/src/www/gfmorpho/gfmorpho.html index 3a58d4442..46ab12f5f 100644 --- a/src/www/gfmorpho/gfmorpho.html +++ b/src/www/gfmorpho/gfmorpho.html @@ -10,7 +10,7 @@ Give language, part of speech, and one or more word forms, to obtain the inflection table.

-

+
@@ -25,7 +25,7 @@ Examples: Lat A vetus veteris Thus notice that strings are given without quotes, but features -are prefixed with an underscore _ (a temporary hack). +are prefixed with an underscore _.

Languages and part of speech tags

@@ -50,24 +50,36 @@ inflection table from the forms given. For a vast majority of words in all languages, it is enough to give just one form. But sometimes more forms are needed to get the inflection table right. +

+ +This is a front end to the Paradigms modules in the GF Resource Grammar. +See RGL +Synopsis for more information on available languages and paradigms. + +

Filtering with patterns

-You may not want to see the whole table. Then you can filter it with patterns, each of which works like +You may not want to see the whole table. +Then you can filter it with patterns, each of which works like "grep", using * to match any substring, either in the features or in the forms:
   Eng N baby -Gen
   Eng V die -dy*
 
-This is a front end to the Paradigms modules in the GF Resource Grammar. -See RGL -Synopsis for available languages and paradigms. +If several pattern are given, they are applied in conjunction. +Patterns prefixed with a tilde ~ rather than a hyphen +- are checked for not matching. Thus the search +
+  Eng N baby -Gen ~Pl
+
+selects the lines that contain Gen but not Pl.

Using custom paradigms

-(Another temporary hack, for GF experts:) If you want to use other paradigms than the smart +(For GF experts.) If you want to use other paradigms than the smart mk paradigms, you can prefix your input with ! and use the normal expression syntax of GF. For example: