mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-07 21:15:19 +03:00
journal: clarify that txn/posting comments must start with semicolon
This commit is contained in:
parent
0e4d791371
commit
4ab71f0d0a
@ -610,15 +610,15 @@ multilinecommentp = do
|
||||
|
||||
emptyorcommentlinep :: JournalParser m ()
|
||||
emptyorcommentlinep = do
|
||||
lift (many spacenonewline) >> (commentp <|> (lift (many spacenonewline) >> newline >> return ""))
|
||||
lift (many spacenonewline) >> (linecommentp <|> (lift (many spacenonewline) >> newline >> return ""))
|
||||
return ()
|
||||
|
||||
-- | Parse a possibly multi-line comment following a semicolon.
|
||||
followingcommentp :: JournalParser m Text
|
||||
followingcommentp =
|
||||
-- ptrace "followingcommentp"
|
||||
do samelinecomment <- lift (many spacenonewline) >> (try semicoloncommentp <|> (newline >> return ""))
|
||||
newlinecomments <- many (try (lift (some spacenonewline) >> semicoloncommentp))
|
||||
do samelinecomment <- lift (many spacenonewline) >> (try commentp <|> (newline >> return ""))
|
||||
newlinecomments <- many (try (lift (some spacenonewline) >> commentp))
|
||||
return $ T.unlines $ samelinecomment:newlinecomments
|
||||
|
||||
-- | Parse a possibly multi-line comment following a semicolon, and
|
||||
@ -650,10 +650,10 @@ followingcommentandtagsp mdefdate = do
|
||||
-- to get good error positions.
|
||||
startpos <- getPosition
|
||||
commentandwhitespace :: String <- do
|
||||
let semicoloncommentp' = (:) <$> char ';' <*> anyChar `manyTill` eolof
|
||||
let commentp' = (:) <$> char ';' <*> anyChar `manyTill` eolof
|
||||
sp1 <- lift (many spacenonewline)
|
||||
l1 <- try (lift semicoloncommentp') <|> (newline >> return "")
|
||||
ls <- lift . many $ try ((++) <$> some spacenonewline <*> semicoloncommentp')
|
||||
l1 <- try (lift commentp') <|> (newline >> return "")
|
||||
ls <- lift . many $ try ((++) <$> some spacenonewline <*> commentp')
|
||||
return $ unlines $ (sp1 ++ l1) : ls
|
||||
let comment = T.pack $ unlines $ map (lstrip . dropWhile (==';') . strip) $ lines commentandwhitespace
|
||||
-- pdbg 0 $ "commentws:"++show commentandwhitespace
|
||||
@ -676,14 +676,15 @@ followingcommentandtagsp mdefdate = do
|
||||
|
||||
return (comment, tags, mdate, mdate2)
|
||||
|
||||
-- A transaction/posting comment must start with a semicolon.
|
||||
-- This parser ignores leading whitespace.
|
||||
commentp :: JournalParser m Text
|
||||
commentp = commentStartingWithp commentchars
|
||||
commentp = commentStartingWithp ";"
|
||||
|
||||
commentchars :: [Char]
|
||||
commentchars = "#;*"
|
||||
|
||||
semicoloncommentp :: JournalParser m Text
|
||||
semicoloncommentp = commentStartingWithp ";"
|
||||
-- A line (file-level) comment can start with a semicolon, hash,
|
||||
-- or star (allowing org nodes). This parser ignores leading whitespace.
|
||||
linecommentp :: JournalParser m Text
|
||||
linecommentp = commentStartingWithp ";#*"
|
||||
|
||||
commentStartingWithp :: [Char] -> JournalParser m Text
|
||||
commentStartingWithp cs = do
|
||||
|
@ -541,8 +541,9 @@ P 2010/1/1 € $1.40
|
||||
## Comments
|
||||
|
||||
Lines in the journal beginning with a semicolon (`;`) or hash (`#`) or
|
||||
asterisk (`*`) are comments, and will be ignored. (Asterisk comments
|
||||
make it easy to treat your journal like an org-mode outline in emacs.)
|
||||
star (`*`) are comments, and will be ignored. (Star comments cause
|
||||
org-mode nodes to be ignored, allowing emacs users to fold and navigate
|
||||
their journals with org-mode or orgstruct-mode.)
|
||||
|
||||
Also, anything between [`comment` and `end comment` directives](#multi-line-comments) is a (multi-line) comment.
|
||||
If there is no `end comment`, the comment extends to the end of the file.
|
||||
@ -551,20 +552,21 @@ You can attach comments to a transaction by writing them after the
|
||||
description and/or indented on the following lines (before the
|
||||
postings). Similarly, you can attach comments to an individual
|
||||
posting by writing them after the amount and/or indented on the
|
||||
following lines.
|
||||
following lines.
|
||||
Transaction and posting comments must begin with a semicolon (`;`).
|
||||
|
||||
Some examples:
|
||||
|
||||
```journal
|
||||
# a journal comment
|
||||
# a file comment
|
||||
|
||||
; also a journal comment
|
||||
; also a file comment
|
||||
|
||||
comment
|
||||
This is a multiline comment,
|
||||
This is a multiline file comment,
|
||||
which continues until a line
|
||||
where the "end comment" string
|
||||
appears on its own.
|
||||
appears on its own (or end of file).
|
||||
end comment
|
||||
|
||||
2012/5/14 something ; a transaction comment
|
||||
@ -573,7 +575,7 @@ end comment
|
||||
posting2
|
||||
; a comment for posting 2
|
||||
; another comment line for posting 2
|
||||
; a journal comment (because not indented)
|
||||
; a file comment (because not indented)
|
||||
```
|
||||
|
||||
## Tags
|
||||
|
@ -1,78 +1,56 @@
|
||||
# comment tests
|
||||
|
||||
# 1.
|
||||
# 1. several comment characters allowed for file characters;
|
||||
# print shows in-transaction & posting comments;
|
||||
# comment line is preserved, starting column is not.
|
||||
hledger -f - print
|
||||
<<<
|
||||
2009/01/01 x
|
||||
; transaction comment 1
|
||||
; transaction comment 2
|
||||
a 1
|
||||
b
|
||||
>>>
|
||||
2009/01/01 x
|
||||
; transaction comment 1
|
||||
; transaction comment 2
|
||||
a 1
|
||||
b
|
||||
; file comments, ignored
|
||||
# file comment using a hash
|
||||
* file comment using a star (org node)
|
||||
; file comments need not
|
||||
# start in
|
||||
* column 0
|
||||
|
||||
>>>=0
|
||||
|
||||
# 2.
|
||||
hledger -f - print
|
||||
<<<
|
||||
2009/01/01 x
|
||||
a 1
|
||||
b
|
||||
; comment line after postings
|
||||
>>>
|
||||
2009/01/01 x
|
||||
a 1
|
||||
b
|
||||
|
||||
>>>=0
|
||||
|
||||
# 3. print should preserve transaction (entry) comments and which line they're on
|
||||
hledger -f - print
|
||||
<<<
|
||||
; leading journal comment, not preserved
|
||||
|
||||
; transaction preceding comment, not preserved
|
||||
; pre-transaction comment, ignored
|
||||
2009/1/1 x ; transaction same line comment
|
||||
; transaction new line comment
|
||||
; transaction new line comment
|
||||
a 1 ; posting 1 same line comment
|
||||
; posting 1 new line comment
|
||||
b
|
||||
a
|
||||
; posting 2 new line comment
|
||||
; journal comment right after the transaction, not preserved
|
||||
; file comment right after the transaction, ignored
|
||||
|
||||
; trailing journal comment, not preserved
|
||||
; trailing file comment, ignored
|
||||
>>>
|
||||
2009/01/01 x ; transaction same line comment
|
||||
; transaction new line comment
|
||||
a 1 ; posting 1 same line comment
|
||||
; posting 1 new line comment
|
||||
b
|
||||
a
|
||||
; posting 2 new line comment
|
||||
|
||||
>>>2
|
||||
>>>=0
|
||||
|
||||
# 4. a posting comment should appear in print
|
||||
# 2. transaction comments must use ;
|
||||
hledger -f - print
|
||||
<<<
|
||||
2010/01/01 x
|
||||
a 1 ; comment
|
||||
b -1
|
||||
|
||||
2017/1/1 this # and * are not ; the comment
|
||||
>>>
|
||||
2010/01/01 x
|
||||
a 1 ; comment
|
||||
b -1
|
||||
2017/01/01 this # and * are not ; the comment
|
||||
|
||||
>>>2
|
||||
>>>=0
|
||||
|
||||
# 5. a posting comment should not appear in register
|
||||
# 3. posting comments must use ;
|
||||
hledger -f - print
|
||||
<<<
|
||||
2017/1/1
|
||||
a 0 # hash & star not allowed for posting comments
|
||||
>>>=1
|
||||
|
||||
# 4. register does not show comments
|
||||
hledger -f - register
|
||||
<<<
|
||||
2010/1/1 x
|
||||
@ -84,3 +62,4 @@ hledger -f - register
|
||||
b -1 0
|
||||
>>>2
|
||||
>>>=0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user