6.13.9. The pass frame

The _pass frame_ contains data gleaned during a single pass over a master document. The pass frame is reinitialised for each pass, so that defaults are re-established.

For each master document thread, multiple passes on a document are performed sequentially: a pass may depend on previous passes.

The thread generating a document is said to converge if an successive passes reach a fixed point; that is, if all the outputs from one pass are the same as from the previous pass.

Conceptually, interscript repeats passes indefinitely until the passes converge; in practice, a limit is placed on the number of passes for two reasons: the first is to prevent unstable definitions locking up the computer, and the second is to allow for the fact that detection of convergence is, in general, difficult and not fully implemented.

For example, although comparison of output files is a useful tool, minor variations between passes, such as time stamps, may lead to failed comparisons based on representation rather than semantic content.

Start python section to interscript/frames/passf.py[1 /2 ] Next Last
     1: #line 26 "pass_frame.ipk"
     2: import string
     3: import traceback
     4: import sys
     5: 
     6: from interscript.drivers.sources import source_open_error
     7: from interscript.drivers.sources.disk import named_file_source
     8: from interscript.drivers.sources.base import eoi
     9: from interscript.frames.inputf import input_frame
    10: from interscript.weavers.auto import auto_weaver
    11: from interscript.drivers.sources.base import eoi
    12: from interscript.parsers.html import sgml_wrapper, html_filter
    13: 
    14: class pass_frame:
    15:   def __init__(self,master, passno):
    16:     # the display
    17:     self.master = master
    18:     self.process = master.process
    19: 
    20:     self.passno = passno
    21: 
    22:     self.verbosity = master.verbosity
    23:     self.echo_input = master.echo_input
    24:     self.autoweave = master.autoweave
    25: 
    26:     self.ids = {}
    27:     self.flist = []
    28:     self.fdict = {}
    29:     self.iflist = []
    30:     self.toc = []
    31:     self.include_files = []
    32:     self.classes = {}
    33:     self.functions = {}
    34:     self.testno = 0
    35:     self.sequence = 0
    36:     self.tests = {}
    37:     self.section_index = {}
    38: 
    39:     if self.verbosity>=3:
    40:       print 'Autoweave',self.autoweave
    41: 
    42:     file = self.master.filename
    43:     if self.verbosity>=2:
    44:       print 'Processing',file,'Pass',passno
    45: 
End python section to interscript/frames/passf.py[1]


6.13.9.1. Construct input object