{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf460 {\fonttbl\f0\fmodern\fcharset0 Courier;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\sl264\slmult1\ql\qnatural\pardirnatural \f0\fs28 \cf0 The following sections discuss how Ledger is architected, from the\ ground up, and will show how to use the various parts of the Ledger\ library from your own scripts. Ledger essentially follows five steps in\ reporting data to the user:\ \ @enumerate\ @item Parse journal file into an internal representation\ @item Perform any implied math within the journal file\ @item ``Face'' this internal representation as a virtual document\ @item Apply a series of transforms to the virtual document\ @item Display the virtual document using a formatting command\ @end enumerate\ \ The calculations in step two are specified by the user, such as when a\ posting's value might contain mathematical operators. The\ calculations in step four are implied in the transformations, for\ example when the @option\{--average\} option is used.\ \ At the core, however, Ledger is basically a sophisticated calculator\ with special knowledge about commoditized values. It knows what you\ mean if you add ten dollars to twenty euros, and later ask for the\ balance of that particular account. So it follows that first we must\ discuss how Ledger deals with math, and from there move on to describing\ how the steps above are achieved.}