summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2009-11-26 14:43:31 +0000
committerkrasimir <krasimir@chalmers.se>2009-11-26 14:43:31 +0000
commitba1b602053300d982e973f446e44bd7a436c157d (patch)
tree558a2dcfd55ea676eaa2aa8cfe6b5286c3239089
parent6b0a662c35856beb306f0c873869e4a0e02165ef (diff)
change PGF.categories to return list of identifiers instead of types
-rw-r--r--src/GF/Command/Commands.hs2
-rw-r--r--src/PGF.hs4
-rw-r--r--src/server/PGFService.hs7
3 files changed, 6 insertions, 7 deletions
diff --git a/src/GF/Command/Commands.hs b/src/GF/Command/Commands.hs
index 228b40c37..73730b050 100644
--- a/src/GF/Command/Commands.hs
+++ b/src/GF/Command/Commands.hs
@@ -835,7 +835,7 @@ allCommands cod env@(pgf, mos) = Map.fromList [
_ -> fromExprs es
prGrammar opts
- | isOpt "cats" opts = return $ fromString $ unwords $ map (showType []) $ categories pgf
+ | isOpt "cats" opts = return $ fromString $ unwords $ map showCId $ categories pgf
| isOpt "fullform" opts = return $ fromString $ concatMap (morpho "" prFullFormLexicon) $ optLangs opts
| isOpt "missing" opts = return $ fromString $ unlines $ [unwords (showCId la:":": map showCId cs) |
la <- optLangs opts, let cs = missingLins pgf la]
diff --git a/src/PGF.hs b/src/PGF.hs
index 1345c027d..b49a19db6 100644
--- a/src/PGF.hs
+++ b/src/PGF.hs
@@ -199,7 +199,7 @@ abstractName :: PGF -> Language
-- | List of all categories defined in the given grammar.
-- The categories are defined in the abstract syntax
-- with the \'cat\' keyword.
-categories :: PGF -> [Type]
+categories :: PGF -> [CId]
-- | The start category is defined in the grammar with
-- the \'startcat\' flag. This is usually the sentence category
@@ -279,7 +279,7 @@ languages pgf = cncnames pgf
languageCode pgf lang =
fmap (replace '_' '-') $ lookConcrFlag pgf lang (mkCId "language")
-categories pgf = [DTyp [] c (map EMeta [0..length hs]) | (c,hs) <- Map.toList (cats (abstract pgf))]
+categories pgf = [c | (c,hs) <- Map.toList (cats (abstract pgf))]
startCat pgf = DTyp [] (lookStartCat pgf) []
diff --git a/src/server/PGFService.hs b/src/server/PGFService.hs
index c4290b7da..0a457395f 100644
--- a/src/server/PGFService.hs
+++ b/src/server/PGFService.hs
@@ -69,9 +69,8 @@ pgfMain pgf command =
Nothing -> return Nothing
Just "" -> return Nothing
Just cat -> case PGF.readType cat of
- Nothing -> throwCGIError 400 "Bad category" ["Bad category: " ++ cat]
- Just typ | typ `elem` PGF.categories pgf -> return $ Just typ
- | otherwise -> throwCGIError 400 "Unknown category" ["Unknown category: " ++ PGF.showType [] typ]
+ Nothing -> throwCGIError 400 "Bad category" ["Bad category: " ++ cat]
+ Just typ -> return $ Just typ -- typecheck the category
getFrom :: CGI (Maybe PGF.Language)
getFrom = getLang "from"
@@ -146,7 +145,7 @@ doGrammar pgf macc = showJSON $ toJSObject
("languageCode", showJSON $ fromMaybe "" (PGF.languageCode pgf l)),
("canParse", showJSON $ PGF.canParse pgf l)]
| l <- PGF.languages pgf]
- categories = map toJSObject [[("cat", PGF.showType [] cat)] | cat <- PGF.categories pgf]
+ categories = map toJSObject [[("name", PGF.showCId cat)] | cat <- PGF.categories pgf]
doGraphvizAbstrTree pgf tree = do
let dot = PGF.graphvizAbstractTree pgf (True,True) tree