timedot: allow a note after the date, use as transaction descriptions

This commit is contained in:
Simon Michael 2020-02-28 01:33:11 -08:00
parent 190233b576
commit 26c19c65b0
2 changed files with 8 additions and 3 deletions

View File

@ -53,6 +53,7 @@ import Data.Char (isSpace)
import Data.List (foldl') import Data.List (foldl')
import Data.Maybe import Data.Maybe
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text as T
import Text.Megaparsec hiding (parse) import Text.Megaparsec hiding (parse)
import Text.Megaparsec.Char import Text.Megaparsec.Char
@ -115,10 +116,11 @@ timedotdayp :: JournalParser m [Transaction]
timedotdayp = do timedotdayp = do
traceparse " timedotdayp" traceparse " timedotdayp"
lift $ optional orgheadingprefixp lift $ optional orgheadingprefixp
d <- datep <* lift eolof d <- datep
daydesc <- strip <$> lift restofline
es <- catMaybes <$> many (const Nothing <$> try (lift emptyorcommentlinep') <|> es <- catMaybes <$> many (const Nothing <$> try (lift emptyorcommentlinep') <|>
Just <$> (notFollowedBy datep >> timedotentryp)) Just <$> (notFollowedBy datep >> timedotentryp))
return $ map (\t -> t{tdate=d}) es -- <$> many timedotentryp return $ map (\t -> t{tdate=d, tdescription=T.pack daydesc}) es -- <$> many timedotentryp
-- | Parse a single timedot entry to one (dateless) transaction. -- | Parse a single timedot entry to one (dateless) transaction.
-- @ -- @

View File

@ -22,11 +22,14 @@ so it could be used to represent dated quantities other than time.
In the docs below we'll assume it's time. In the docs below we'll assume it's time.
A timedot file contains a series of day entries. A timedot file contains a series of day entries.
A day entry begins with a non-indented hledger-style [simple date](journal.html#simple-dates) (see hledger_journal(5)). A day entry begins with a non-indented hledger-style
[simple date](journal.html#simple-dates) (Y-M-D, Y/M/D, Y.M.D..)
Any additional text on the same line is used as a transaction description for this day.
This is followed by optionally-indented timelog items for that day, one per line. This is followed by optionally-indented timelog items for that day, one per line.
Each timelog item is a note, usually a hledger:style:account:name representing a time category, Each timelog item is a note, usually a hledger:style:account:name representing a time category,
followed by two or more spaces, and a quantity. followed by two or more spaces, and a quantity.
Each timelog item generates a hledger transaction.
Quantities can be written as: Quantities can be written as: