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
[docs]class UEFFooter (UEFLine): def __init__ (self): super ().__init__ () @property def fields (self): yield 'END-SPLUS EXCHANGE'
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)