forked from GitHub/gf-core
fixed command abbreviations in GFI
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
module GF.Command.Interpreter (
|
||||
CommandEnv (..),
|
||||
mkCommandEnv,
|
||||
interpretCommandLine
|
||||
interpretCommandLine,
|
||||
getCommandOp
|
||||
) where
|
||||
|
||||
import GF.Command.Commands
|
||||
@@ -71,11 +72,11 @@ interpret env trees0 comm = case lookCommand co comms of
|
||||
-- analyse command parse tree to a uniform datastructure, normalizing comm name
|
||||
getCommand :: Command -> [Exp] -> (String,[Option],[Exp])
|
||||
getCommand co ts = case co of
|
||||
Command c opts (AExp t) -> (getOp c,opts,[t]) -- ignore piped
|
||||
Command c opts ANoArg -> (getOp c,opts,ts) -- use piped
|
||||
where
|
||||
-- abbreviation convention from gf
|
||||
getOp s = case break (=='_') s of
|
||||
Command c opts (AExp t) -> (getCommandOp c,opts,[t]) -- ignore piped
|
||||
Command c opts ANoArg -> (getCommandOp c,opts,ts) -- use piped
|
||||
|
||||
-- abbreviation convention from gf commands
|
||||
getCommandOp s = case break (=='_') s of
|
||||
(a:_,_:b:_) -> [a,b] -- axx_byy --> ab
|
||||
_ -> case s of
|
||||
[a,b] -> s -- ab --> ab
|
||||
|
||||
@@ -23,7 +23,6 @@ pCommand = do
|
||||
cmd <- pIdent
|
||||
RP.skipSpaces
|
||||
opts <- RP.sepBy pOption RP.skipSpaces
|
||||
-- opts <- RP.many pOption
|
||||
arg <- RP.option ANoArg (fmap AExp (pExp False))
|
||||
return (Command cmd opts arg)
|
||||
|
||||
|
||||
@@ -45,7 +45,11 @@ loop opts gfenv0 = do
|
||||
cpu' <- getCPUTime
|
||||
putStrLnFlush (show ((cpu' - cputime gfenv') `div` 1000000000) ++ " msec")
|
||||
loop opts $ gfenv' {cputime = cpu'}
|
||||
case words s of
|
||||
let
|
||||
pwords = case words s of
|
||||
w:ws -> getCommandOp w :ws
|
||||
ws -> ws
|
||||
case pwords of
|
||||
-- special commands, requiring source grammar in env
|
||||
"!":ws -> do
|
||||
system $ unwords ws
|
||||
|
||||
Reference in New Issue
Block a user