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.
# - - - - - c l a s s N o t e F i e l d - - - - -
class NoteField(FieldItem):
"""Represents a note number.
Exports: as inherited.
"""
Scans a note-number field. We don't care what's there, so long as it has the right length.
# - - - 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 ) )
scanField = staticmethod ( scanField )