diff -r cce8d5662738 -r 364320323b4d xmlclass/xmlclass.py --- a/xmlclass/xmlclass.py Thu Jun 21 10:23:26 2007 +0200 +++ b/xmlclass/xmlclass.py Mon Jun 25 18:57:14 2007 +0200 @@ -37,9 +37,9 @@ """ Regular expression models for extracting dates and times from a string """ -time_model = re.compile('([0-9]{2}):([0-9]{2}):([0-9]{2})') +time_model = re.compile('([0-9]{2}):([0-9]{2}):([0-9]{2}(?:.[0-9]*)?)') date_model = re.compile('([0-9]{4})-([0-9]{2})-([0-9]{2})') -datetime_model = re.compile('([0-9]{4})-([0-9]{2})-([0-9]{2})[ T]([0-9]{2}):([0-9]{2}):([0-9]{2})') +datetime_model = re.compile('([0-9]{4})-([0-9]{2})-([0-9]{2})[ T]([0-9]{2}):([0-9]{2}):([0-9]{2}(?:.[0-9]*)?)') """ Dictionaries for stocking Classes and Types created from XML @@ -254,11 +254,11 @@ elif type_compute in ["string","anyURI","NMTOKEN"]: return StringType, "\"\"" elif type_compute == "time": - return TimeType, "time(0,0,0)" + return TimeType, "time(0,0,0,0)" elif type_compute == "date": return DateType, "date(1,1,1)" elif type_compute == "dateTime": - return DateTimeType, "datetime(1,1,1,0,0,0)" + return DateTimeType, "datetime(1,1,1,0,0,0,0)" elif type_compute == "language": return StringType, "\"en-US\"" else: @@ -299,7 +299,10 @@ elif type_compute == "time": result = time_model.match(value) if result: - time_values = [int(v) for v in result.groups()] + values = result.groups() + time_values = [int(v) for v in values[:2]] + seconds = float(values[2]) + time_values.extend([int(seconds), int((seconds % 1) * 1000000)]) return time(*time_values) else: raise ValueError, "\"%s\" is not a valid time!"%value @@ -313,7 +316,10 @@ elif type_compute == "dateTime": result = datetime_model.match(value) if result: - datetime_values = [int(v) for v in result.groups()] + values = result.groups() + datetime_values = [int(v) for v in values[:5]] + seconds = float(values[5]) + datetime_values.extend([int(seconds), int((seconds % 1) * 1000000)]) return datetime(*datetime_values) else: raise ValueError, "\"%s\" is not a valid datetime!"%value