mirror of
https://github.com/simonmichael/hledger.git
synced 2024-09-19 10:17:35 +03:00
cln!: sourcepos: Use megaparsec-supplied sourcePosPretty.
Change showSourcePos to sourcePosPretty, and showSourcePosPair to sourcePosPairPretty.
This commit is contained in:
parent
f0e00b3a43
commit
19ed6d3f00
@ -169,7 +169,7 @@ transactionBalanceError t errs =
|
||||
|
||||
annotateErrorWithTransaction :: Transaction -> String -> String
|
||||
annotateErrorWithTransaction t s =
|
||||
unlines [ showSourcePosPair $ tsourcepos t, s
|
||||
unlines [ sourcePosPairPretty $ tsourcepos t, s
|
||||
, T.unpack . T.stripEnd $ showTransaction t
|
||||
]
|
||||
|
||||
@ -586,7 +586,7 @@ checkBalanceAssertionOneCommodityB p@Posting{paccount=assertedacct} assertedamt
|
||||
(case ptransaction p of
|
||||
Nothing -> "?" -- shouldn't happen
|
||||
Just t -> printf "%s\ntransaction:\n%s"
|
||||
(showSourcePos pos)
|
||||
(sourcePosPretty pos)
|
||||
(textChomp $ showTransaction t)
|
||||
:: String
|
||||
where
|
||||
|
@ -374,7 +374,7 @@ journalCheckPayeesDeclared j = mapM_ checkpayee (jtxns j)
|
||||
| otherwise = Left $
|
||||
printf "undeclared payee \"%s\"\nat: %s\n\n%s"
|
||||
(T.unpack p)
|
||||
(showSourcePosPair $ tsourcepos t)
|
||||
(sourcePosPairPretty $ tsourcepos t)
|
||||
(linesPrepend2 "> " " " . (<>"\n") . textChomp $ showTransaction t)
|
||||
where
|
||||
p = transactionPayee t
|
||||
@ -392,7 +392,7 @@ journalCheckAccountsDeclared j = mapM_ checkacct (journalPostings j)
|
||||
++ case ptransaction of
|
||||
Nothing -> ""
|
||||
Just t -> printf "in transaction at: %s\n\n%s"
|
||||
(showSourcePosPair $ tsourcepos t)
|
||||
(sourcePosPairPretty $ tsourcepos t)
|
||||
(linesPrepend " " . (<>"\n") . textChomp $ showTransaction t)
|
||||
where
|
||||
as = journalAccountNamesDeclared j
|
||||
@ -411,7 +411,7 @@ journalCheckCommoditiesDeclared j =
|
||||
++ case ptransaction of
|
||||
Nothing -> ""
|
||||
Just t -> printf "in transaction at: %s\n\n%s"
|
||||
(showSourcePosPair $ tsourcepos t)
|
||||
(sourcePosPairPretty $ tsourcepos t)
|
||||
(linesPrepend " " . (<>"\n") . textChomp $ showTransaction t)
|
||||
where
|
||||
mfirstundeclaredcomm =
|
||||
|
@ -6,14 +6,13 @@ module Hledger.Utils.Parse (
|
||||
SimpleTextParser,
|
||||
TextParser,
|
||||
|
||||
-- * SourcePos
|
||||
SourcePos(..),
|
||||
mkPos,
|
||||
unPos,
|
||||
initialPos,
|
||||
|
||||
-- * SourcePos
|
||||
showSourcePosPair,
|
||||
showSourcePos,
|
||||
sourcePosPretty,
|
||||
sourcePosPairPretty,
|
||||
|
||||
choice',
|
||||
choiceInState,
|
||||
@ -63,16 +62,12 @@ type SimpleTextParser = Parsec CustomErr Text -- XXX an "a" argument breaks the
|
||||
-- | A parser of text that runs in some monad.
|
||||
type TextParser m a = ParsecT CustomErr Text m a
|
||||
|
||||
-- | Render source position in human-readable form.
|
||||
showSourcePos :: SourcePos -> String
|
||||
showSourcePos (SourcePos fp l c) =
|
||||
show fp ++ " (line " ++ show (unPos l) ++ ", column " ++ show (unPos c) ++ ")"
|
||||
|
||||
-- | Render a pair of source position in human-readable form.
|
||||
showSourcePosPair :: (SourcePos, SourcePos) -> String
|
||||
showSourcePosPair (SourcePos fp l1 _, SourcePos _ l2 c2) =
|
||||
show fp ++ " (lines " ++ show (unPos l1) ++ "-" ++ show l2' ++ ")"
|
||||
where l2' = if unPos c2 == 1 then unPos l2 - 1 else unPos l2 -- might be at end of file withat last new-line
|
||||
-- | Render a pair of source positions in human-readable form, only displaying the range of lines.
|
||||
sourcePosPairPretty :: (SourcePos, SourcePos) -> String
|
||||
sourcePosPairPretty (SourcePos fp l1 _, SourcePos _ l2 c2) =
|
||||
fp ++ ":" ++ show (unPos l1) ++ "-" ++ show l2'
|
||||
where
|
||||
l2' = if unPos c2 == 1 then unPos l2 - 1 else unPos l2 -- might be at end of file with a final new line
|
||||
|
||||
-- | Backtracking choice, use this when alternatives share a prefix.
|
||||
-- Consumes no input if all choices fail.
|
||||
|
@ -30,7 +30,7 @@ journalCheckOrdereddates CliOpts{reportspec_=rspec} j = do
|
||||
let
|
||||
datestr = if date2_ ropts then "2" else ""
|
||||
uniquestr = if checkunique then " and/or not unique" else ""
|
||||
positionstr = showSourcePosPair $ tsourcepos error
|
||||
positionstr = sourcePosPairPretty $ tsourcepos error
|
||||
txn1str = T.unpack . linesPrepend (T.pack " ") $ showTransaction previous
|
||||
txn2str = T.unpack . linesPrepend2 (T.pack "> ") (T.pack " ") $ showTransaction error
|
||||
Left $
|
||||
|
@ -49,5 +49,5 @@ checkposting leafandfullnames Posting{paccount,ptransaction} =
|
||||
Nothing -> ""
|
||||
Just t -> printf "\nseen in \"%s\" in transaction at: %s\n\n%s"
|
||||
paccount
|
||||
(showSourcePosPair $ tsourcepos t)
|
||||
(sourcePosPairPretty $ tsourcepos t)
|
||||
(linesPrepend "> " . (<>"\n") . textChomp $ showTransaction t) :: String)
|
||||
|
@ -56,7 +56,7 @@ $ hledger -f - stats
|
||||
b $-1 = $-3
|
||||
|
||||
$ hledger -f - stats
|
||||
>2 /balance assertion.*line 11, column 12/
|
||||
>2 /balance assertion.*11:12/
|
||||
>=1
|
||||
|
||||
# 4. should also work without commodity symbols
|
||||
@ -314,7 +314,7 @@ $ hledger -f - stats
|
||||
a 0 == $1
|
||||
|
||||
$ hledger -f - stats
|
||||
>2 /balance assertion.*line 10, column 15/
|
||||
>2 /balance assertion.*10:15/
|
||||
>=1
|
||||
|
||||
# 18. Mix different commodities and total assignments
|
||||
|
@ -68,7 +68,7 @@ $ hledger -f journal:- print
|
||||
[c]
|
||||
|
||||
$ hledger -f journal:- print
|
||||
>2 /lines 1-4/
|
||||
>2 /:1-4/
|
||||
>=1
|
||||
|
||||
# 7. Balancing error messages show the recorded precision, not the display precision.
|
||||
@ -123,7 +123,7 @@ $ hledger -f- print
|
||||
b 1B
|
||||
$ hledger -f- print
|
||||
>2
|
||||
hledger: "-" (lines 1-3)
|
||||
hledger: -:1-3
|
||||
could not balance this transaction:
|
||||
real postings all have the same sign
|
||||
2020-01-01
|
||||
|
Loading…
Reference in New Issue
Block a user