forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nicola Ken Barozzi <nicola...@apache.org>
Subject [RT] Forrest processing pipeline
Date Mon, 15 Nov 2004 09:11:56 GMT

I'll try to describe how Forrest should/could do the processing.
This will be part of our "Forrest 1.0 spec" that will guide us to the 
first version of our product.

The items below are conceptual. All references to actual source dirs and 
  internal or external formats is generic and will be later on specified 
and changed as needed.

[Items to be discussed *after* this:
  * raw files
  * project directory layout
  * config file formats
]

Step 1: Resolution (content)
-------------------

Forrest has a single conceptual source space, that can initially be 
thought of as a single directory, the current xdocs dir.

Every file that is outside of this directory has to be resolved by a 
locationmap, so that Forrest sees it all as a single directory in any case.

This source space contains files that a filename and an extension. There 
should be only one file with a certain name in a certain directory, 
which will be the main source of our transformation.

For each URL that is requested, there will be only one source file 
resolved, which will be our main source.

Step 2: Format Transformation (content)
------------------------------

In the second step, Forrest transforms the main source to the 
intermediate format, which is XHTML2 (also automatic transforms from 
XHTML1 and HTML will be supported). Transformations from HTML and XHTML 
will be done in the core, while all others will be done by plugins 
(input plugins).

Multiple formats can be asked for the same source: the filename asked 
will be in the following manner.

   name.type.format

IOW:

   myfile.content.html
   myfile.javadocs.html
   myfile.html

Step 3: Filtering (content)
------------------

This is a new step, that adds navigation, metadata, extra content and 
transformations to the content stream.

Navigation is the addition of the 'tab' and 'linkmap' information to the 
stream.

Metadata about a page can be added, like the date, page size, etc.

Nuggets of information can be added based on the URL and on the contents 
of the main source. For example, newsfeeds about the page being processed.

Filtering on the main content can be done, like the automatic creation 
of links based on the site.xml linkmap or footnote processing.

These filtering steps are to be done by plugins (filtering plugins).

Step 4: Skinning (presentation)
------------------

Based on the skin specified, the content is transformed in a format that 
contains presentation information. Example formats are html, fo 
(formatting objects) and svg.

Note that this part adds functionality to the content. For example, a 
search item can be displayed, or widgets can be used. These are fbits, 
or functionality bits, and are different from nuggets, which are extra 
content.

Note that fbits are skin dependant, so that a skin can decide to 
implement them or not. The configuration of these bits are to be done 
with the new generic skinconf format.

Example of current fbits are the search pane, the project and group 
logos, the page format selector, etc.

Step 5: Theming (presentation)
------------------

Here the result of the skinning is given to theming, that adds colors 
and general appearance info. In html it's css files for example, or the 
skinconf color information.

Step 6: Serializing (presentation)
------------------

The presentation is transformed to the actual final format with output 
plugins. For example a fo presentation can be outputted as pdf, rtf, 
doc, ps, etc.

-- 
Nicola Ken Barozzi                   nicolaken@apache.org
             - verba volant, scripta manent -
    (discussions get forgotten, just code remains)
---------------------------------------------------------------------


Mime
View raw message