imp: journal: support decimal-mark directive in journal files

To match csv-rule and override amount-style as described in
https://github.com/simonmichael/hledger/issues/1670
This commit is contained in:
Lawrence 2021-09-28 11:34:01 -05:00 committed by Simon Michael
parent 66b969a74c
commit fb817ffa55
3 changed files with 40 additions and 0 deletions

View File

@ -246,6 +246,7 @@ directivep = (do
,defaultcommoditydirectivep ,defaultcommoditydirectivep
,commodityconversiondirectivep ,commodityconversiondirectivep
,ignoredpricecommoditydirectivep ,ignoredpricecommoditydirectivep
,decimalmarkdirectivep
] ]
) <?> "directive" ) <?> "directive"
@ -317,6 +318,7 @@ includedirectivep = do
jparsedefaultyear = jparsedefaultyear j jparsedefaultyear = jparsedefaultyear j
,jparsedefaultcommodity = jparsedefaultcommodity j ,jparsedefaultcommodity = jparsedefaultcommodity j
,jparseparentaccounts = jparseparentaccounts j ,jparseparentaccounts = jparseparentaccounts j
,jparsedecimalmark = jparsedecimalmark j
,jparsealiases = jparsealiases j ,jparsealiases = jparsealiases j
,jcommodities = jcommodities j ,jcommodities = jcommodities j
-- ,jparsetransactioncount = jparsetransactioncount j -- ,jparsetransactioncount = jparsetransactioncount j
@ -599,6 +601,18 @@ commodityconversiondirectivep = do
lift restofline lift restofline
return () return ()
-- | Read a valid decimal mark from the decimal-mark directive e.g
--
-- decimal-mark ,
decimalmarkdirectivep :: JournalParser m ()
decimalmarkdirectivep = do
string "decimal-mark" <?> "decimal mark"
lift skipNonNewlineSpaces1
mark <- satisfy isDecimalMark
modify' $ \j -> j{jparsedecimalmark=Just mark}
lift restofline
return ()
--- *** transactions --- *** transactions
-- | Parse a transaction modifier (auto postings) rule. -- | Parse a transaction modifier (auto postings) rule.

View File

@ -0,0 +1,4 @@
decimal-mark ,
2021-05-01 YANDEX.PLUS
Assets:Yandex -199,00 RUB
Expenses:Unknown:RUB

View File

@ -0,0 +1,22 @@
# 1. Commas specified as decimal mark
$ hledger -f commas.journal bal
-199,00 RUB Assets:Yandex
199,00 RUB Expenses:Unknown:RUB
--------------------
0
>=0
# 2. Include file with different decimal mark
<
commodity 1000.00 RUB
include commas.journal
2021-05-19 MTS Phone
Assets:Yandex -100.5 RUB
Expenses:Phone 100.5 RUB
$ hledger -f - bal
-299.50 RUB Assets:Yandex
100.50 RUB Expenses:Phone
199.00 RUB Expenses:Unknown:RUB
--------------------
0
>=0