diff --git a/hledger-lib/Hledger/Read/JournalReader.hs b/hledger-lib/Hledger/Read/JournalReader.hs index 5daf540ad..caa5db5a7 100644 --- a/hledger-lib/Hledger/Read/JournalReader.hs +++ b/hledger-lib/Hledger/Read/JournalReader.hs @@ -248,8 +248,10 @@ directivep = (do ,commoditydirectivep ,commodityconversiondirectivep ,definedirectivep + ,evaldirectivep ,exprdirectivep ,payeedirectivep + ,pythondirectivep ,decimalmarkdirectivep ,defaultyeardirectivep ,defaultcommoditydirectivep @@ -528,7 +530,8 @@ formatdirectivep expectedsym = do -- apply fixed, apply tag, assert, bucket, A, capture, check, define, expr applyfixeddirectivep, applytagdirectivep, assertdirectivep, bucketdirectivep, capturedirectivep, checkdirectivep, definedirectivep, exprdirectivep, - valuedirectivep, commandlineflagdirectivep :: JournalParser m () + valuedirectivep, pythondirectivep, evaldirectivep, commandlineflagdirectivep + :: JournalParser m () applyfixeddirectivep = do string "apply fixed" >> lift restofline >> return () applytagdirectivep = do string "apply tag" >> lift restofline >> return () assertdirectivep = do string "assert" >> lift restofline >> return () @@ -538,6 +541,10 @@ checkdirectivep = do string "check" >> lift restofline >> return () definedirectivep = do string "define" >> lift restofline >> return () exprdirectivep = do string "expr" >> lift restofline >> return () valuedirectivep = do string "value" >> lift restofline >> return () +pythondirectivep = do string "python" >> lift restofline >> many (indented $ lift restofline) >> return () + where + indented = (lift skipNonNewlineSpaces1 >>) +evaldirectivep = do string "eval" >> lift restofline >> return () commandlineflagdirectivep = do string "--" >> lift restofline >> return () keywordp :: String -> JournalParser m () diff --git a/hledger/hledger.m4.md b/hledger/hledger.m4.md index df9f4760c..2c5065f78 100644 --- a/hledger/hledger.m4.md +++ b/hledger/hledger.m4.md @@ -2751,6 +2751,8 @@ define VAR=EXPR expr EXPR tag NAME value EXPR +python +eval EXPR --command-line-flag ``` diff --git a/hledger/test/ledger-compat/syntax/hledger-other.test b/hledger/test/ledger-compat/syntax/hledger-other.test index 535aeb128..141205d46 100644 --- a/hledger/test/ledger-compat/syntax/hledger-other.test +++ b/hledger/test/ledger-compat/syntax/hledger-other.test @@ -59,6 +59,9 @@ tag Receipt check value =~ /pattern/ assert value != "foobar" value some_func +python + import os +eval foo --command-line-flag $ hledger -f- check