reader package:hledger-lib
A hledger journal reader is a triple of storage format name, a
detector of that format, and a parser from that format to Journal. The
type variable m appears here so that rParserr can hold a journal
parser, which depends on it.
findReader mformat mpath
Find the reader named by
mformat, if provided. ("ssv" and
"tsv" are recognised as alternate names for the csv reader, which also
handles those formats.) Or, if a file path is provided, find the first
reader that handles its file extension, if any.
If a filepath is prefixed by one of the reader names and a colon,
split that off. Eg "csv:-" -> (Just "csv", "-"). These reader
prefixes can be used to force a specific reader, overriding the file
extension.
A reader for CSV (character-separated) data. This also reads a rules
file to help interpret the CSV data.
A reader for hledger's journal file format
(
http://hledger.org/hledger.html#the-journal-file). hledger's
journal format is a compatible subset of c++ ledger's
(
http://ledger-cli.org/3.0/doc/ledger3.html#Journal-Format), so
this reader should handle many ledger files as well. Example:
2012/3/24 gift
expenses:gifts $10
assets:cash
Journal format supports the include directive which can read files in
other formats, so the other file format readers need to be importable
and invocable here.
Some important parts of journal parsing are therefore kept in
Hledger.Read.Common, to avoid import cycles.
A reader for a CSV rules file. This reads the actual data from a file
specified by a source rule or from a similarly-named file in
the same directory.
Most of the code for reading rules files and csv files is in this
module.
A reader for the timeclock file format generated by timeclock.el
(
http://www.emacswiki.org/emacs/TimeClock). Example:
i 2007/03/10 12:26:00 hledger
o 2007/03/10 17:26:02
From timeclock.el 2.6:
A timeclock contains data in the form of a single entry per line.
Each entry has the form:
CODE YYYYMMDD HH:MM:SS [COMMENT]
CODE is one of: b, h, i, o or O. COMMENT is optional when the code is
i, o or O. The meanings of the codes are:
b Set the current time balance, or "time debt". Useful when
archiving old log data, when a debt must be carried forward.
The COMMENT here is the number of seconds of debt.
h Set the required working time for the given day. This must
be the first entry for that day. The COMMENT in this case is
the number of hours in this workday. Floating point amounts
are allowed.
i Clock in. The COMMENT in this case should be the name of the
project worked on.
o Clock out. COMMENT is unnecessary, but can be used to provide
a description of how the period went, for example.
O Final clock out. Whatever project was being worked on, it is
now finished. Useful for creating summary reports.
A reader for the "timedot" file format. Example:
;DATE
;ACCT DOTS # Each dot represents 15m, spaces are ignored
;ACCT 8 # numbers with or without a following h represent hours
;ACCT 5m # numbers followed by m represent minutes
; on 2/1, 1h was spent on FOSS haskell work, 0.25h on research, etc.
2/1
fos.haskell .... ..
biz.research .
inc.client1 .... .... .... .... .... ....
2/2
biz.research .
inc.client1 .... .... ..