check: accept case-insensitive prefixes as arguments
Might a bad idea, but avoiding wasteful typing..
This commit is contained in:
parent
9abb33d8e7
commit
7510d99aec
@ -15,8 +15,8 @@ import Hledger.Cli.Commands.Check.Ordereddates (journalCheckOrdereddates)
|
||||
import Hledger.Cli.Commands.Check.Uniqueleafnames (journalCheckUniqueleafnames)
|
||||
import System.Console.CmdArgs.Explicit
|
||||
import Data.Either (partitionEithers)
|
||||
import Data.Char (toUpper)
|
||||
import Safe (readMay)
|
||||
import Data.Char (toLower,toUpper)
|
||||
import Data.List (isPrefixOf, find)
|
||||
import Control.Monad (forM_)
|
||||
import System.IO (stderr, hPutStrLn)
|
||||
import System.Exit (exitFailure)
|
||||
@ -60,19 +60,24 @@ data Check =
|
||||
| Ordereddates
|
||||
| Payees
|
||||
| Uniqueleafnames
|
||||
deriving (Read,Show,Eq)
|
||||
deriving (Read,Show,Eq,Enum,Bounded)
|
||||
|
||||
-- | Parse the name of an error check, or return the name unparsed.
|
||||
-- Names are conventionally all lower case, but this parses case insensitively.
|
||||
-- | Parse the name (or a name prefix) of an error check, or return the name unparsed.
|
||||
-- Check names are conventionally all lower case, but this parses case insensitively.
|
||||
parseCheck :: String -> Either String Check
|
||||
parseCheck s = maybe (Left s) Right $ readMay $ capitalise s
|
||||
parseCheck s =
|
||||
maybe (Left s) (Right . read) $ -- PARTIAL: read should not fail here
|
||||
find (s' `isPrefixOf`) $ checknames
|
||||
where
|
||||
s' = capitalise $ map toLower s
|
||||
checknames = map show [minBound..maxBound::Check]
|
||||
|
||||
capitalise :: String -> String
|
||||
capitalise (c:cs) = toUpper c : cs
|
||||
capitalise s = s
|
||||
|
||||
-- | Parse a check argument: a string which is the lower-case name of an error check,
|
||||
-- followed by zero or more space-separated arguments for that check.
|
||||
-- or a prefix thereof, followed by zero or more space-separated arguments for that check.
|
||||
parseCheckArgument :: String -> Either String (Check,[String])
|
||||
parseCheckArgument s =
|
||||
dbg3 "check argument" $
|
||||
|
||||
@ -8,6 +8,8 @@ prevent problems in your data.
|
||||
Some of these are run automatically; or,
|
||||
you can use this `check` command to run them on demand,
|
||||
with no output and a zero exit code if all is well.
|
||||
Specify their names (or a prefix) as argument(s).
|
||||
|
||||
Some examples:
|
||||
|
||||
```shell
|
||||
|
||||
Loading…
Reference in New Issue
Block a user