diff --git a/src/compiler/GF/Command/Commands.hs b/src/compiler/GF/Command/Commands.hs index c282ed45f..0ca911031 100644 --- a/src/compiler/GF/Command/Commands.hs +++ b/src/compiler/GF/Command/Commands.hs @@ -392,8 +392,9 @@ allCommands cod env@(pgf, mos) = Map.fromList [ ], exec = \opts -> return . fromStrings . map (optLin opts), options = [ - ("all","show all forms and variants"), + ("all","show all forms and variants, one by line (cf. l -list)"), ("bracket","show tree structure with brackets and paths to nodes"), + ("list","show all forms and variants, comma-separated on one line (cf. l -all)"), ("multi","linearize to all languages (default)"), ("table","show all forms labelled by parameters"), ("treebank","show the tree and tag linearizations with language names") @@ -870,8 +871,12 @@ allCommands cod env@(pgf, mos) = Map.fromList [ linear :: [Option] -> CId -> Expr -> String linear opts lang = let unl = unlex opts lang in case opts of - _ | isOpt "all" opts -> unlines . concat . intersperse [[]] . map (map (unl . snd)) . tabularLinearizes pgf lang - _ | isOpt "table" opts -> unlines . concat . intersperse [[]] . map (map (\(p,v) -> p+++":"+++unl v)) . tabularLinearizes pgf lang + _ | isOpt "all" opts -> unlines . concat . intersperse [[]] . + map (map (unl . snd)) . tabularLinearizes pgf lang + _ | isOpt "list" opts -> commaList . concat . intersperse [[]] . + map (map (unl . snd)) . tabularLinearizes pgf lang + _ | isOpt "table" opts -> unlines . concat . intersperse [[]] . + map (map (\(p,v) -> p+++":"+++unl v)) . tabularLinearizes pgf lang _ | isOpt "bracket" opts -> unlines . markLinearizes pgf lang _ -> unl . linearize pgf lang @@ -883,6 +888,9 @@ allCommands cod env@(pgf, mos) = Map.fromList [ Just le -> chunks ',' le _ -> [] + commaList [] = [] + commaList ws = concat $ head ws : map (", " ++) (tail ws) + -- Proposed logic of coding in unlexing: -- - If lang has no coding flag, or -to_utf8 is not in opts, just opts are used. -- - If lang has flag coding=utf8, -to_utf8 is ignored. diff --git a/src/compiler/GF/Quiz.hs b/src/compiler/GF/Quiz.hs index d0353ff79..6a1e5aae5 100644 --- a/src/compiler/GF/Quiz.hs +++ b/src/compiler/GF/Quiz.hs @@ -52,7 +52,7 @@ morphologyList pgf ig typ number = do ts <- generateRandom pgf typ >>= return . take (max 1 number) gen <- newStdGen let ss = map (tabularLinearizes pgf ig) ts - let size = length (head ss) + let size = length (head (head ss)) let forms = take number $ randomRs (0,size-1) gen return [(snd (head pws0) +++ fst (pws0 !! i), ws) | (pwss@(pws0:_),i) <- zip ss forms, let ws = map (\pws -> snd (pws !! i)) pwss]