Changeset 225 for pyyaml/trunk/lib/yaml/constructor.py
- Timestamp:
- 08/16/06 14:22:38 (7 years ago)
- File:
-
- 1 edited
-
pyyaml/trunk/lib/yaml/constructor.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
pyyaml/trunk/lib/yaml/constructor.py
r222 r225 6 6 from nodes import * 7 7 8 try: 9 import datetime 10 datetime_available = True 11 except ImportError: 12 datetime_available = False 8 import datetime 13 9 14 10 try: … … 305 301 :(?P<minute>[0-9][0-9]) 306 302 :(?P<second>[0-9][0-9]) 307 (?: \.(?P<fraction>[0-9]*))?308 (?:[ \t]*(? :Z|(?P<tz_hour>[-+][0-9][0-9]?)309 (?::(?P<tz_minute>[0-9][0-9]) ?)?))?)?$''', re.X)303 (?:(?P<fraction>\.[0-9]*))? 304 (?:[ \t]*(?P<tz>Z|(?P<tz_sign>[-+])(?P<tz_hour>[0-9][0-9]?) 305 (?::(?P<tz_minute>[0-9][0-9]))?))?)?$''', re.X) 310 306 311 307 def construct_yaml_timestamp(self, node): … … 313 309 match = self.timestamp_regexp.match(node.value) 314 310 values = match.groupdict() 315 for key in values: 316 if values[key]: 317 values[key] = int(values[key]) 318 else: 319 values[key] = 0 320 fraction = values['fraction'] 321 if fraction: 322 while 10*fraction < 1000000: 323 fraction *= 10 324 values['fraction'] = fraction 325 stamp = datetime.datetime(values['year'], values['month'], values['day'], 326 values['hour'], values['minute'], values['second'], values['fraction']) 327 diff = datetime.timedelta(hours=values['tz_hour'], minutes=values['tz_minute']) 328 return stamp-diff 311 year = int(values['year']) 312 month = int(values['month']) 313 day = int(values['day']) 314 if not values['hour']: 315 return datetime.date(year, month, day) 316 hour = int(values['hour']) 317 minute = int(values['minute']) 318 second = int(values['second']) 319 fraction = 0 320 if values['fraction']: 321 fraction = int(float(values['fraction'])*1000000) 322 delta = None 323 if values['tz_sign']: 324 tz_hour = int(values['tz_hour']) 325 tz_minute = int(values['tz_minute'] or 0) 326 delta = datetime.timedelta(hours=tz_hour, minutes=tz_minute) 327 if values['tz_sign'] == '-': 328 delta = -delta 329 data = datetime.datetime(year, month, day, hour, minute, second, fraction) 330 if delta: 331 data -= delta 332 return data 329 333 330 334 def construct_yaml_omap(self, node): … … 430 434 SafeConstructor.construct_yaml_binary) 431 435 432 if datetime_available: 433 SafeConstructor.add_constructor( 434 u'tag:yaml.org,2002:timestamp', 435 SafeConstructor.construct_yaml_timestamp) 436 SafeConstructor.add_constructor( 437 u'tag:yaml.org,2002:timestamp', 438 SafeConstructor.construct_yaml_timestamp) 436 439 437 440 SafeConstructor.add_constructor(
Note: See TracChangeset
for help on using the changeset viewer.
