AsciiDoc Architecture
=====================
Stuart Rackham <srackham@methods.co.nz>
December 2004


Just a few notes describing how AsciiDoc is put together.


Overveiw
--------
AsciiDoc is comprised of the following entities:

- Configuration files
- Document Attributes
- Document translator


Reimplementation in Ruby
------------------------
- Long term goal.
- Built with unit test framework.
- Combine global reader, config, document services using Dependency
  Injection containers (see Chad Fowler's  'Dependency Injection in
  Ruby' paper).
- Study the ERB class source code for ideas on parsing.
- Don't try to incorporate ERB type substitutions -- it's quite
  different in intent and usage, besides it's easy to implement a
  stand-alone ERB preprocessor.


Vocabulary
----------
Document Title::
  Document header title.

Section Title::
  Section or subsection title.

Block Title::
  Block element title.

List::
  There are four list types:
  - Itemized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Variant Delimited Block:
  mized
  - Ordered
  - Labeled (horizontal and vertical).
  - Callout

Paragraph::

Delimited Block::

Varian