$archiver
NSKeyedArchiver
$objects
$null
$class
CF$UID
37
NS.objects
CF$UID
2
$class
CF$UID
33
NS.keys
CF$UID
3
CF$UID
4
CF$UID
5
NS.objects
CF$UID
6
CF$UID
7
CF$UID
35
Title
Text
Date
Untitled Snapshot
$class
CF$UID
34
NSAttributes
CF$UID
10
NSDelegate
CF$UID
0
NSString
CF$UID
8
$class
CF$UID
9
NS.string
The ledger file format is quite simple, but also very flexible. It supports many options, though typically the user can ignore most of them. They are summarized below.

The initial character of each line determines what the line means, and how it should be interpreted. Allowable initial characters are:

@table @code @item NUMBER A line beginning with a number denotes a transaction. It may be followed by any number of lines, each beginning with whitespace, to denote the transaction's account postings. The format of the first line is:

@example DATE[=EDATE] [*|!] [(CODE)] DESC @end example

If @samp{*} appears after the date (with optional effective date), it indicates the transaction is ``cleared'', which can mean whatever the user wants it t omean. If @samp{!} appears after the date, it indicates d the transaction is ``pending''; i.e., tentatively cleared from the user's point of view, but not yet actually cleared. If a @samp{CODE} appears in parentheses, it may be used to indicate a check number, or the type of the posting. Following these is the payee, or a description of the posting.

The format of each following posting is:

@example ACCOUNT AMOUNT [; NOTE] @end example

The @samp{ACCOUNT} may be surrounded by parentheses if it is a virtual postings, or square brackets if it is a virtual postings that must balance. The @samp{AMOUNT} can be followed by a per-unit posting cost, by specifying @samp{@@ AMOUNT}, or a complete posting cost with @samp{@@@@ AMOUNT}. Lastly, the @samp{NOTE} may specify an actual and/or effective date for the posting by using the syntax @samp{[ACTUAL_DATE]} or @samp{[=EFFECTIVE_DATE]} or @samp{[ACTUAL_DATE=EFFECtIVE_DATE]}.

@item = An automated transaction. A value expression must appear after the equal sign.

After this initial line there should be a set of one or more postings, just as if it were normal transaction. If the amounts of the postings have no commodity, they will be applied as modifiers to whichever real posting is matched by the value expression.

@item ~ A period transaction. A period expression must appear after the tilde.

After this initial line there should be a set of one or more postings, just as if it were normal transaction.

@item ! A line beginning with an exclamation mark denotes a command directive. It must be immediately followed by the command word. The supported commands are:

@table @samp @item !include Include the stated ledger file.

@item !account The account name is given is taken to be the parent of all postings that follow, until @samp{!end} is seen.

@item !end Ends an account block. @end table

@item ; A line beginning with a colon indicates a comment, and is ignored.

@item Y If a line begins with a capital Y, it denotes the year used for all subsequent transactions that give a date without a year. The year should appear immediately after the Y, for example: @samp{Y2004}. This is useful at the beginning of a file, to specify the year for that file. If all transactions specify a year, however, this command has no effect.

@item P Specifies a historical price for a commodity. These are usually found in a pricing history file (see the @option{-Q} option). The syntax is: @example P DATE SYMBOL PRICE @end example

@item N SYMBOL Indicates that pricing information is to be ignored for a given symbol, nor will quotes ever be downloaded for that symbol. Useful with a home currency, such as the dollar ($). It is recommended that these pricing options be set in the price database file, which defaults to @file{~/.pricedb}. The syntax for this command is: @example N SYMBOL @end example

@item D AMOUNT Specifies the default commodity to use, by specifying an amount in the expected format. The @command{transaction} command will use this commodity as the default when none other can be determined. This command may be used multiple times, to set the default flags for different commodities; whichever is seen last is used as the default commodity. For example, to set US dollars as the default commodity, while also setting the thousands flag and decimal flag for that commodity, use: @example D $1,000.00 @end example

@item C AMOUNT1 = AMOUNT2 Specifies a commodity conversion, where the first amount is given to be equivalent to the second amount. The first amount should use the decimal precision desired during reporting: @example C 1.00 Kb = 1024 bytes @end example

@item i, o, b, h These four relate to timeclock support, which permits ledger to read timelog files. See the timeclock's documentation for more info on the syntax of its timelog files. @end table
$classes
NSMutableString
NSString
NSObject
$classname
NSMutableString
$class
CF$UID
33
NS.keys
CF$UID
11
CF$UID
12
NS.objects
CF$UID
13
CF$UID
30
NSParagraphStyle
NSFont
$class
CF$UID
29
NSAlignment
4
NSLineHeightMultiple
1.1000000238418579
NSTabStops
CF$UID
14
$class
CF$UID
28
NS.objects
CF$UID
15
CF$UID
17
CF$UID
18
CF$UID
19
CF$UID
20
CF$UID
21
CF$UID
22
CF$UID
23
CF$UID
24
CF$UID
25
CF$UID
26
CF$UID
27
$class
CF$UID
16
NSLocation
28
$classes
NSTextTab
NSObject
$classname
NSTextTab
$class
CF$UID
16
NSLocation
56
$class
CF$UID
16
NSLocation
84
$class
CF$UID
16
NSLocation
112
$class
CF$UID
16
NSLocation
140
$class
CF$UID
16
NSLocation
168
$class
CF$UID
16
NSLocation
196
$class
CF$UID
16
NSLocation
224
$class
CF$UID
16
NSLocation
252
$class
CF$UID
16
NSLocation
280
$class
CF$UID
16
NSLocation
308
$class
CF$UID
16
NSLocation
336
$classes
NSArray
NSObject
$classname
NSArray
$classes
NSParagraphStyle
NSObject
$classname
NSParagraphStyle
$class
CF$UID
32
NSName
CF$UID
31
NSSize
14
NSfFlags
16
Courier
$classes
NSFont
NSObject
$classname
NSFont
$classes
NSDictionary
NSObject
$classname
NSDictionary
$classes
KBWordCountingTextStorage
NSTextStorage
NSMutableAttributedString
NSAttributedString
NSObject
$classname
KBWordCountingTextStorage
$class
CF$UID
36
NS.time
267380388.94292599
$classes
NSDate
NSObject
$classname
NSDate
$classes
NSMutableArray
NSArray
NSObject
$classname
NSMutableArray
$top
Snapshots
CF$UID
1
$version
100000