Next / Previous / Contents / Shipman's homepage

70. class NoteField: Note number

The allowable content of this two-character field is any two characters. Technically, there should be only two digits, but banders will put other stuff here. See the specification.

baseclasses.py
# - - - - -   c l a s s   N o t e F i e l d   - - - - -

class NoteField(FieldItem):
    '''Represents a note number.

      Exports: as inherited.
    '''

70.1. NoteField.scanField()

Scans a note-number field. We don't care what's there, so long as it has the right length.

baseclasses.py
# - - -   N o t e F i e l d . s c a n F i e l d   - - -

    @staticmethod
    def scanField(encounter, scan, fieldName):
        '''Scan a note-number field.
        '''

        #-- 1 --
        # [ if the line in scan has at least NOTE_L characters ->
        #     scan  :=  scan advanced NOTE_L
        #     text  :=  next NOTE_L characters from scan, uppercased
        #   else ->
        #     Log()  +:=  error message
        #     raise SyntaxError ]
        try:
            text = scan.move(NOTE_L).upper()
        except IndexError:
            scan.syntax("Expecting a %d-digit note number." %
                        NOTE_L)

        #-- 2 --
        # [ encounter.(fieldName)  :=  a new NoteField object with
        #                              text=(text) ]
        setattr(encounter, fieldName,
                NoteField(encounter, text))