Source code for uw.scientia.uef_lines
"""Cyon file line type definitions.
"""
__all__ = [
'UEFComment',
'UEFHeader1',
'UEFHeader2',
'UEFFooter',
]
def format_date (dt):
return dt.strftime ('%d/%m/%Y')
def format_time (dt):
return dt.strftime ('%H:%M:%S')
class UEFLine:
def format (self):
return '\t'.join (field or '' for field in self.fields)
[docs]class UEFComment (UEFLine):
def __init__ (self, comment):
super ().__init__ ()
self.__comment = comment
@property
def comment (self):
return self.__comment
@property
def fields (self):
yield '; %s' % self.comment
[docs]class UEFHeader1 (UEFLine):
def __init__ (self, version, originator, timestamp):
super ().__init__ ()
self.__version = version
self.__originator = originator
self.__timestamp = timestamp
@property
def version (self):
return self.__version
@property
def originator (self):
return self.__originator
@property
def timestamp (self):
return self.__timestamp
@property
def fields (self):
yield 'SPLUS EXCHANGE'
yield str (self.version)
yield self.originator
yield format_date (self.timestamp)
yield format_time (self.timestamp)
[docs]class UEFHeader2 (UEFLine):
def __init__ (self, dataset, startdate, enddate, transfer_id):
super ().__init__ ()
self.__dataset = dataset
self.__startdate = startdate
self.__enddate = enddate
self.__transfer_id = transfer_id
@property
def dataset (self):
return self.__dataset
@property
def startdate (self):
return self.__startdate
@property
def enddate (self):
return self.__enddate
@property
def transfer_id (self):
return self.__transfer_id
@property
def fields (self):
yield self.dataset
yield format_date (self.startdate)
yield format_date (self.enddate)
yield self.transfer_id
class UEFRecord (UEFLine):
def __init__ (self, base):
super ().__init__ ()
self.__base = base
@property
def base (self):
return self.__base
@property
def fields (self):
yield str (self.base + self.field)