$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 Sometimes a commodity has several forms which are all equivalent. An example of this is time. Whether tracked in terms of minutes, hours or days, it should be possible to convert between the various forms. Doing this requires the use of commodity equivalencies. For example, you might have the following two postings, one which transfers an hour of time into a @samp{Billable} account, and another which decreases the same account by ten minutes. The resulting report will indicate that fifty minutes remain: @smallexample 2005/10/01 Work done for company Billable:Client 1h Project:XYZ 2005/10/02 Return ten minutes to the project Project:XYZ 10m Billable:Client @end smallexample Reporting the balance for this ledger file produces: @smallexample 50.0m Billable:Client -50.0m Project:XYZ @end smallexample This example works because ledger already knows how to handle seconds, minutes and hours, as part of its time tracking support. Defining other equivalencies is simple. The following is an example that creates data equivalencies, helpful for tracking bytes, kilobytes, megabytes, and more: @smallexample C 1.00 Kb = 1024 b C 1.00 Mb = 1024 Kb C 1.00 Gb = 1024 Mb C 1.00 Tb = 1024 Gb @end smallexample Each of these definitions correlates a commodity (such as @samp{Kb}) and a default precision, with a certain quantity of another commodity. In the above example, kilobytes are reporetd with two decimal places of precision and each kilobyte is equal to 1024 bytes. Equivalency chains can be as long as desired. Whenever a commodity would report as a decimal amount (less than @samp{1.00}), the next smallest commodity is used. If a commodity could be reported in terms of a higher commodity without resulting to a partial fraction, then the larger commodity is used. $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 267380389.293807 $classes NSDate NSObject $classname NSDate $classes NSMutableArray NSArray NSObject $classname NSMutableArray $top Snapshots CF$UID 1 $version 100000