This is the short form of an old summary based on design decisions of 2002. It predates the release of SiSU by a number of years, and should possibly be removed.
A rough chart of the SiSU program structure can be found here:
What follows is a brief description of the chart's components, based on the numbers and letters used in the chart.
A Input text ascii with minimalistic human markup requirements
B Machine intermediate processing output, used by all other modules - there for the time being is a selection: human readable; a Ruby marshal dump of the same,
and; a YAML file 121 Once the intermediate stage is created, if no changes to input (i.e. A) are made, it is possible to start with B as input for program (i.e. to skip stage A and processing required to get to stage B). This might be of interest if document appearance is modified but not content. Abstract document structure is "created" here, with the pre-processing of the likes of tables, numbering (headings, paragraphs etc.) and endnotes, to ensure that all subsequent processing is based on the same integral document structures.
C Various final publication outputs that all share a common citation numbering system
html - there are possibilities for output based on tables or output based on css
pdf - landscape and portrait currently set to A4 paper size
XML with a flat structure,sax, and with a deeper (embedded) structure, dom
sql - data in sql database retaining document structure, this is in some ways similar to B output, as is likely to be further processed for presentation.
1 data feed controller for other program components
2 Creation of intermediate stage B, which contains information related to document structure used by all subsequent data output modules.
3 Parameter extraction. Program takes data related to the document being processed.
4 Relates primarily to appearance/ design, how the site or document should look:
4a Initialised variables used for "typesetting". eg. Margin widths etc. called by program. This can be done in 3 stages, there are i. the default program-wide settings, ii. possibility of setting alternative site-wide settings, iii. possibility of providing settings for an individual document
4b Template, includes formatting classes eg. for appearance of html (whether table based or css) or for pdf output. (For examples of templates at work, see examples provided earlier of html output in css and tables versions, and of pdf landscape and portrait outputs that result from templates that provide different the LaTeX output for the resulting pdfs.
5 Here we have the logic engines that call process B the intermediate machine generated data and call upon the relevant templates to produce the different presentations of the document.
5a html module - to construct html documents
5b LaTeX module - to construct LaTeX, which is then fed to pdflatex to produce pdf files
5c SQL module - to import data into PostgreSQL database retaining document structure detail and other detail common to the other output formats. This keeps all information regarding document structure in four relational database tables, one containing semantic and other headers, a second substantive texts, a third endnotes, a fourth pre-formatted texts. (the flexibility exists to carry this further)
SiSU is written in Ruby and assumes Linux OS (development has been on Debian/Gnu/Linux)
LaTeX output, then uses LaTeX (and /pdflatex/ LaTeX to pdf) for pdf output
lout output lout, then uses Lout to produce postscript (and postscript to pdf conversion), [not currently maintained]
sql output (database feed) eg PostgreSQL, making use of Ruby dbi or pgsql modules to be used by PostgerSQL, or sqlite, making use of Ruby dbi or sqlite modules to be used by sqlite
Not required but taken advantage of if available:
tidy (XML, xhtml well formed check)
trang (relaxng, rnc to dtd conversion)
there are other modules ... see this document.
121. YAML is currently used for some resource configuration, but not for intermediate storage. YAML ‹http://www.yaml.org/› stands for "yet another markup language". These two references may help to provide an idea of the joys of YAML ‹http://www.xml.com/lpt/a/2002/07/24/yaml.html› and ‹http://yaml4r.sf.net/cookbook/›
Eric von Hippel
Erik S. Raymond