forked from GitHub/gf-core
option rf -paragraphs
This commit is contained in:
@@ -445,6 +445,7 @@ pgfCommands = Map.fromList [
|
|||||||
],
|
],
|
||||||
options = [
|
options = [
|
||||||
("lines","return the list of lines, instead of the singleton of all contents"),
|
("lines","return the list of lines, instead of the singleton of all contents"),
|
||||||
|
("paragraphs","return the list of paragraphs, as separated by empty lines"),
|
||||||
("tree","convert strings into trees")
|
("tree","convert strings into trees")
|
||||||
],
|
],
|
||||||
exec = getEnv $ \ opts _ (Env pgf mos) -> do
|
exec = getEnv $ \ opts _ (Env pgf mos) -> do
|
||||||
@@ -470,6 +471,7 @@ pgfCommands = Map.fromList [
|
|||||||
_ | isOpt "tree" opts ->
|
_ | isOpt "tree" opts ->
|
||||||
returnFromLines [(1::Int,s)]
|
returnFromLines [(1::Int,s)]
|
||||||
_ | isOpt "lines" opts -> return (fromStrings $ lines s)
|
_ | isOpt "lines" opts -> return (fromStrings $ lines s)
|
||||||
|
_ | isOpt "paragraphs" opts -> return (fromStrings $ toParagraphs $ lines s)
|
||||||
_ -> return (fromString s),
|
_ -> return (fromString s),
|
||||||
flags = [("file","the input file name")]
|
flags = [("file","the input file name")]
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
-- elsewhere
|
-- elsewhere
|
||||||
module GF.Command.CommonCommands where
|
module GF.Command.CommonCommands where
|
||||||
import Data.List(sort)
|
import Data.List(sort)
|
||||||
|
import Data.Char (isSpace)
|
||||||
import GF.Command.CommandInfo
|
import GF.Command.CommandInfo
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
import GF.Infra.SIO
|
import GF.Infra.SIO
|
||||||
@@ -116,11 +117,13 @@ commonCommands = fmap (mapCommandExec liftSIO) $ Map.fromList [
|
|||||||
let (os,fs) = optsAndFlags opts
|
let (os,fs) = optsAndFlags opts
|
||||||
trans <- optTranslit opts
|
trans <- optTranslit opts
|
||||||
|
|
||||||
if isOpt "lines" opts
|
case opts of
|
||||||
then return $ fromStrings $ map (trans . stringOps (envFlag fs) (map prOpt os)) $ toStrings x
|
_ | isOpt "lines" opts -> return $ fromStrings $ map (trans . stringOps (envFlag fs) (map prOpt os)) $ toStrings x
|
||||||
else return ((fromString . trans . stringOps (envFlag fs) (map prOpt os) . toString) x),
|
_ | isOpt "paragraphs" opts -> return $ fromStrings $ map (trans . stringOps (envFlag fs) (map prOpt os)) $ toParagraphs $ toStrings x
|
||||||
|
_ -> return ((fromString . trans . stringOps (envFlag fs) (map prOpt os) . toString) x),
|
||||||
options = [
|
options = [
|
||||||
("lines","apply the operation separately to each input line, returning a list of lines")
|
("lines","apply the operation separately to each input line, returning a list of lines"),
|
||||||
|
("paragraphs","apply separately to each input paragraph (as separated by empty lines), returning a list of lines")
|
||||||
] ++
|
] ++
|
||||||
stringOpOptions,
|
stringOpOptions,
|
||||||
flags = [
|
flags = [
|
||||||
@@ -269,3 +272,11 @@ trie = render . pptss . H.toTrie . map H.toATree
|
|||||||
-- ** Converting command input
|
-- ** Converting command input
|
||||||
toString = unwords . toStrings
|
toString = unwords . toStrings
|
||||||
toLines = unlines . toStrings
|
toLines = unlines . toStrings
|
||||||
|
|
||||||
|
toParagraphs = map (unwords . words) . toParas
|
||||||
|
where
|
||||||
|
toParas ls = case break (all isSpace) ls of
|
||||||
|
([],[]) -> []
|
||||||
|
([],_:ll) -> toParas ll
|
||||||
|
(l, []) -> [unwords l]
|
||||||
|
(l, _:ll) -> unwords l : toParas ll
|
||||||
|
|||||||
Reference in New Issue
Block a user