An instance of this class contains the entire symbol table,
a container for AbSym instances, each
representing one bird code. Here is the class interface.
# - - - - - c l a s s A b T a b
class AbTab(object):
'''Represents a symbol table for bird codes.
Exports:
AbTab():
[ return a new, empty symbol table ]
.addAbbr ( code ):
[ code is a string containing a bird code ->
if code.strip().upper() is in self ->
return the associated AbSym instance
else ->
self := self with a new, unbound AbSym
instance added for code.strip().upper()
return that new AbSym instance ]
.__getitem__ ( code ):
[ code is a string ->
if code is in self ->
return the AbSym instance for code
else -> raise KeyError ]
.__iter__(self):
[ generate the AbSym objects in self in ascending
order by code ]
.writeXML ( parent ):
[ parent := parent with an rnc.ABBR_SET_N element added
representing codes in self linked to specific
taxa, and an rnc.COLLISION_SET_N element added
representing collision codes in self ]
Here are the internal structures of the class. The codes are uppercased and stripped of leading and trailing blanks to provide a case-insensitive match.
State/Invariants:
.__abbrMap:
[ a dictionary whose keys are the stripped, uppercased
bird codes in self, and each related value is the
AbSym instance for that code ]
'''