forked from GitHub/gf-core
eqStr ; pipe to system
This commit is contained in:
@@ -5,9 +5,9 @@
|
||||
-- Stability : (stable)
|
||||
-- Portability : (portable)
|
||||
--
|
||||
-- > CVS $Date: 2005/06/26 20:40:33 $
|
||||
-- > CVS $Date: 2005/10/06 14:21:34 $
|
||||
-- > CVS $Author: aarne $
|
||||
-- > CVS $Revision: 1.12 $
|
||||
-- > CVS $Revision: 1.13 $
|
||||
--
|
||||
-- Predefined function type signatures and definitions.
|
||||
-----------------------------------------------------------------------------
|
||||
@@ -71,7 +71,7 @@ appPredefined t = case t of
|
||||
-- two-place functions
|
||||
App (Q (IC "Predef") (IC f)) z0 -> do
|
||||
(z,_) <- appPredefined z0
|
||||
case (f, z, x) of
|
||||
case (f, norm z, norm x) of
|
||||
("drop", EInt i, K s) -> retb $ K (drop i s)
|
||||
("take", EInt i, K s) -> retb $ K (take i s)
|
||||
("tk", EInt i, K s) -> retb $ K (take (max 0 (length s - i)) s)
|
||||
@@ -102,6 +102,9 @@ appPredefined t = case t of
|
||||
where
|
||||
retb t = return (t,True) -- no further computing needed
|
||||
retf t = return (t,False) -- must be computed further
|
||||
norm t = case t of
|
||||
Empty -> K []
|
||||
_ -> t
|
||||
|
||||
-- read makes variables into constants
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
-- Stability : (stable)
|
||||
-- Portability : (portable)
|
||||
--
|
||||
-- > CVS $Date: 2005/10/06 10:02:33 $
|
||||
-- > CVS $Date: 2005/10/06 14:21:34 $
|
||||
-- > CVS $Author: aarne $
|
||||
-- > CVS $Revision: 1.44 $
|
||||
-- > CVS $Revision: 1.45 $
|
||||
--
|
||||
-- GF shell command interpreter.
|
||||
-----------------------------------------------------------------------------
|
||||
@@ -313,7 +313,9 @@ execC co@(comm, opts0) sa@(sh@(st,(h,_,_,_)),a) = checkOptions st co >> case com
|
||||
CWriteFile file -> justOutputArg opts (writeFile file) sa
|
||||
CAppendFile file -> justOutputArg opts (appendFile file) sa
|
||||
CSpeakAloud -> justOutputArg opts (speechGenerate opts) sa
|
||||
CSystemCommand s -> justOutput opts (system s >> return ()) sa
|
||||
CSystemCommand s -> case a of
|
||||
AUnit -> justOutput opts (system s >> return ()) sa
|
||||
_ -> systemArg opts a s sa
|
||||
CPutString -> changeArg (opSS2CommandArg (optStringCommand opts gro)) sa
|
||||
----- CShowTerm -> changeArg (opTS2CommandArg (optPrintTerm opts gro) . s2t) sa
|
||||
CGrep ms -> changeArg (AString . unlines . filter (grep ms) . lines . prCommandArg) sa
|
||||
@@ -417,6 +419,16 @@ justOutputArg opts f sa@(st,a) = f (utf (prCommandArg a)) >> return (st, AUnit)
|
||||
justOutput :: Options -> IO () -> ShellIO
|
||||
justOutput opts = justOutputArg opts . const
|
||||
|
||||
systemArg :: Options -> CommandArg -> String -> ShellIO
|
||||
systemArg _ cont syst sa = do
|
||||
writeFile tmpi $ prCommandArg cont
|
||||
system $ syst ++ " <" ++ tmpi ++ " >" ++ tmpo
|
||||
s <- readFile tmpo
|
||||
returnArg (AString s) sa
|
||||
where
|
||||
tmpi = "_tmpi" ---
|
||||
tmpo = "_tmpo"
|
||||
|
||||
-- | type system for command arguments; instead of plain strings...
|
||||
data CommandArg =
|
||||
AError String
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
-- Stability : (stable)
|
||||
-- Portability : (portable)
|
||||
--
|
||||
-- > CVS $Date: 2005/10/06 10:02:34 $
|
||||
-- > CVS $Date: 2005/10/06 14:21:34 $
|
||||
-- > CVS $Author: aarne $
|
||||
-- > CVS $Revision: 1.15 $
|
||||
-- > CVS $Revision: 1.16 $
|
||||
--
|
||||
-- Help on shell commands. Generated from HelpFile by 'make help'.
|
||||
-- PLEASE DON'T EDIT THIS FILE.
|
||||
@@ -93,16 +93,19 @@ txtHelpFile =
|
||||
"\ndc, define_command Name Anything" ++
|
||||
"\n Add a new defined command. The Name must star with '%'. Later," ++
|
||||
"\n if 'Name X' is used, it is replaced by Anything where #1 is replaced" ++
|
||||
"\n by X. Currently at most one argument is possible. To see" ++
|
||||
"\n definitions in scope, use help -defs." ++
|
||||
"\n by X. " ++
|
||||
"\n Restrictions: Currently at most one argument is possible, and a defined" ++
|
||||
"\n command cannot appear in a pipe. " ++
|
||||
"\n To see what definitions are in scope, use help -defs." ++
|
||||
"\n examples:" ++
|
||||
"\n dc %tnp p -cat=NP -lang=Eng #1 | l -lang=Swe -- translate NPs" ++
|
||||
"\n %tnp \"this man\" | p -lang=Swe -- translate and parse" ++
|
||||
"\n %tnp \"this man\" -- translate and parse" ++
|
||||
"\n" ++
|
||||
"\ndt, define_term Name Tree" ++
|
||||
"\n Add a constant for a tree. The constant can later be called by" ++
|
||||
"\n prefixing it with '$'. It is not yet usable as a subterm. To see" ++
|
||||
"\n definitions in scope, use help -defs." ++
|
||||
"\n prefixing it with '$'. " ++
|
||||
"\n Restriction: These terms are not yet usable as a subterm. " ++
|
||||
"\n To see what definitions are in scope, use help -defs." ++
|
||||
"\n examples:" ++
|
||||
"\n p -cat=NP \"this man\" | dt tm -- define tm as parse result" ++
|
||||
"\n l -all $tm -- linearize tm in all forms" ++
|
||||
@@ -476,6 +479,12 @@ txtHelpFile =
|
||||
"\n example:" ++
|
||||
"\n ! ls" ++
|
||||
"\n" ++
|
||||
"\n?, system_command: ? String" ++
|
||||
"\n Issues a system command that receives its arguments from GF pipe" ++
|
||||
"\n and returns a value to GF." ++
|
||||
"\n example:" ++
|
||||
"\n h | ? 'wc -l' | p -cat=Num" ++
|
||||
"\n" ++
|
||||
"\n" ++
|
||||
"\n-- Flags. The availability of flags is defined separately for each command." ++
|
||||
"\n" ++
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
-- Stability : (stable)
|
||||
-- Portability : (portable)
|
||||
--
|
||||
-- > CVS $Date: 2005/10/06 10:02:34 $
|
||||
-- > CVS $Date: 2005/10/06 14:21:34 $
|
||||
-- > CVS $Author: aarne $
|
||||
-- > CVS $Revision: 1.27 $
|
||||
-- > CVS $Revision: 1.28 $
|
||||
--
|
||||
-- parsing GF shell commands. AR 11\/11\/2001
|
||||
-----------------------------------------------------------------------------
|
||||
@@ -62,6 +62,7 @@ unquote (x:xs@(_:_)) | x `elem` "\"'" && x == last xs = init xs
|
||||
unquote s = s
|
||||
|
||||
pCommandLine :: HState -> [String] -> CommandLine
|
||||
pCommandLine st (c@('%':_):args) = pCommandLine st $ resolveShMacro st c args
|
||||
pCommandLine st (dc:c:def) | abbrevCommand dc == "dc" = ((CDefineCommand c def, noOptions),AUnit,[])
|
||||
pCommandLine st s = pFirst (chks s) where
|
||||
pFirst cos = case cos of
|
||||
@@ -73,7 +74,6 @@ pCommandLine st s = pFirst (chks s) where
|
||||
chks = map (pCommandOpt st) . chunks "|"
|
||||
|
||||
pCommandOpt :: HState -> [String] -> (Command, Options, [CommandArg])
|
||||
pCommandOpt st (c@('%':_):args) = pCommandOpt st $ resolveShMacro st c args
|
||||
pCommandOpt _ (w:ws) = let
|
||||
(os, co) = getOptions "-" ws
|
||||
(comm, args) = pCommand (abbrevCommand w:co)
|
||||
@@ -136,6 +136,7 @@ pCommand ws = case ws of
|
||||
"ps" : s -> aString CPutString s
|
||||
"st" : s -> aTerm CShowTerm s
|
||||
"!" : s -> aUnit (CSystemCommand (unwords s))
|
||||
"?" : s : x -> aString (CSystemCommand (unquote s)) x
|
||||
"sc" : s -> aUnit (CSystemCommand (unwords s))
|
||||
"g" : f : s -> aString (CGrep (unquote f)) s
|
||||
|
||||
|
||||
19
src/HelpFile
19
src/HelpFile
@@ -64,16 +64,19 @@ s, strip: s
|
||||
dc, define_command Name Anything
|
||||
Add a new defined command. The Name must star with '%'. Later,
|
||||
if 'Name X' is used, it is replaced by Anything where #1 is replaced
|
||||
by X. Currently at most one argument is possible. To see
|
||||
definitions in scope, use help -defs.
|
||||
by X.
|
||||
Restrictions: Currently at most one argument is possible, and a defined
|
||||
command cannot appear in a pipe.
|
||||
To see what definitions are in scope, use help -defs.
|
||||
examples:
|
||||
dc %tnp p -cat=NP -lang=Eng #1 | l -lang=Swe -- translate NPs
|
||||
%tnp "this man" | p -lang=Swe -- translate and parse
|
||||
%tnp "this man" -- translate and parse
|
||||
|
||||
dt, define_term Name Tree
|
||||
Add a constant for a tree. The constant can later be called by
|
||||
prefixing it with '$'. It is not yet usable as a subterm. To see
|
||||
definitions in scope, use help -defs.
|
||||
prefixing it with '$'.
|
||||
Restriction: These terms are not yet usable as a subterm.
|
||||
To see what definitions are in scope, use help -defs.
|
||||
examples:
|
||||
p -cat=NP "this man" | dt tm -- define tm as parse result
|
||||
l -all $tm -- linearize tm in all forms
|
||||
@@ -447,6 +450,12 @@ q, quit: q
|
||||
example:
|
||||
! ls
|
||||
|
||||
?, system_command: ? String
|
||||
Issues a system command that receives its arguments from GF pipe
|
||||
and returns a value to GF.
|
||||
example:
|
||||
h | ? 'wc -l' | p -cat=Num
|
||||
|
||||
|
||||
-- Flags. The availability of flags is defined separately for each command.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user