Improved errors in times.parse.

This commit is contained in:
Dominik Picheta 2015-07-24 22:46:24 +01:00
commit a88131ed4a

View file

@ -789,7 +789,8 @@ proc parseToken(info: var TimeInfo; token, value: string; j: var int) =
of "sat": of "sat":
info.weekday = dSat info.weekday = dSat
else: else:
raise newException(ValueError, "invalid day of week ") raise newException(ValueError,
"Couldn't parse day of week (ddd), got: " & value[j..j+2])
j += 3 j += 3
of "dddd": of "dddd":
if value.len >= j+6 and value[j..j+5].cmpIgnoreCase("sunday") == 0: if value.len >= j+6 and value[j..j+5].cmpIgnoreCase("sunday") == 0:
@ -814,7 +815,8 @@ proc parseToken(info: var TimeInfo; token, value: string; j: var int) =
info.weekday = dSat info.weekday = dSat
j += 8 j += 8
else: else:
raise newException(ValueError, "invalid day of week ") raise newException(ValueError,
"Couldn't parse day of week (dddd), got: " & value)
of "h", "H": of "h", "H":
var pd = parseInt(value[j..j+1], sv) var pd = parseInt(value[j..j+1], sv)
info.hour = sv info.hour = sv
@ -865,7 +867,8 @@ proc parseToken(info: var TimeInfo; token, value: string; j: var int) =
of "dec": of "dec":
info.month = mDec info.month = mDec
else: else:
raise newException(ValueError, "invalid month") raise newException(ValueError,
"Couldn't parse month (MMM), got: " & value)
j += 3 j += 3
of "MMMM": of "MMMM":
if value.len >= j+7 and value[j..j+6].cmpIgnoreCase("january") == 0: if value.len >= j+7 and value[j..j+6].cmpIgnoreCase("january") == 0:
@ -905,7 +908,8 @@ proc parseToken(info: var TimeInfo; token, value: string; j: var int) =
info.month = mDec info.month = mDec
j += 8 j += 8
else: else:
raise newException(ValueError, "invalid month") raise newException(ValueError,
"Couldn't parse month (MMMM), got: " & value)
of "s": of "s":
var pd = parseInt(value[j..j+1], sv) var pd = parseInt(value[j..j+1], sv)
info.second = sv info.second = sv
@ -936,7 +940,8 @@ proc parseToken(info: var TimeInfo; token, value: string; j: var int) =
elif value[j] == '-': elif value[j] == '-':
info.timezone = 0-parseInt($value[j+1]) info.timezone = 0-parseInt($value[j+1])
else: else:
raise newException(ValueError, "Sign for timezone " & value[j]) raise newException(ValueError,
"Couldn't parse timezone offset (z), got: " & value[j])
j += 2 j += 2
of "zz": of "zz":
if value[j] == '+': if value[j] == '+':
@ -944,7 +949,8 @@ proc parseToken(info: var TimeInfo; token, value: string; j: var int) =
elif value[j] == '-': elif value[j] == '-':
info.timezone = 0-value[j+1..j+2].parseInt() info.timezone = 0-value[j+1..j+2].parseInt()
else: else:
raise newException(ValueError, "Sign for timezone " & value[j]) raise newException(ValueError,
"Couldn't parse timezone offset (zz), got: " & value[j])
j += 3 j += 3
of "zzz": of "zzz":
if value[j] == '+': if value[j] == '+':
@ -952,7 +958,8 @@ proc parseToken(info: var TimeInfo; token, value: string; j: var int) =
elif value[j] == '-': elif value[j] == '-':
info.timezone = 0-value[j+1..j+2].parseInt() info.timezone = 0-value[j+1..j+2].parseInt()
else: else:
raise newException(ValueError, "Sign for timezone " & value[j]) raise newException(ValueError,
"Couldn't parse timezone offset (zzz), got: " & value[j])
j += 6 j += 6
of "ZZZ": of "ZZZ":
info.tzname = value[j..j+2].toUpper() info.tzname = value[j..j+2].toUpper()