7.2.8. New in 1a5

By far the most important improvement is the implementing of the frame architecture, and the repackaging of interscript as a python package.

The bulk of interscript is now built as a package in a tree structured directory. Using the frames architecture, the command line interface has been reduced to few lines, which will allow interscript to be embedded in other front end programs.

The web (stacking html) weaver now generates a table of contents which uses javascript to produce a dynamic tree under Internet Explorer.

There are also two home pages for a document, and two tables of contents. The alternate home page creates two framnes, and loads an alternate table of contents into the first frame, which targets the second frame.

The web weaver now generates <LINK> tags similar exhibiting the relationship between the documents.

Tcl script has been discarded completely.

The command line launcher now accepts an option '--test' which pushes the current directory onto the system path to force package loading to look in the current directory. This is the place interscript and user packages will often be built from. The purpose of this hack is to allow documents containing both code and tests for the code, to allow the test code to actually find the newly created modules before they're installed in standard places. By default, sys.path is not modified, so unix '#!/usr/local/bin/python' launched scripts will not search the current directory. This hopefully improves separation between reliable installed software and that under development.

If the first line of a Python output starts with '#!', line numbers are not generated until the next line.

The autoweaver for html and web now makes sinks which use carriage return linefeed pairs as end of line characters. This is to fix bugs in stupid Microsoft software such as Notepad and Wordpad, which refuses to recognize them as end of line. This is important for viewing HTML sources from Internet Explorer.

Sink drivers have been rearchitected to support standard python output file protocols so they can be used, for example, as the sys.stdout device. The Python line handling protocol sucks, stupidly returning the end of line characters at the end of lines on input, and requiring them to be there already on output. Interscript's own protocol returns lines without line terminators, adds them on output, and recognizes linefeed in strings (only) as it's internal end of line terminator.

Option processing now uses an interscript module (getopt wasn't up to it).

There are now four options, '--weaver_prefix', '--weaver_directory', '--tangler_prefix', '--tangler_directory', which allow output to be directed somewhere other than the current directory from the command line. See next item.

Interscript now fixes file names to use a subset of the Unix filename convention. All interscript filenames must use a sensible set of characters for component names, and separate them with '/'. Filename must be relative.

A filename given for a tangler or weaver constructed by the builtin tangler functions or autoweave is prefixed by the directory option before being split into components. Then the prefix is prepended to the first component.

Directories are built automatically (and somewhat prematurely).

The effect is that the prefix_* should usually denote an existing directory in native operating system format, with a directory separator at the end, and the directory_* should be a unix pathname with a '/' at the end.

One of the benefits of this arrangement is that Windows clients can specify output onto another drive, for example using the option:

  --weaver_prefix="d:\project\document files\"
Note the quotes!
7.2.8.1. Separate compilation