42 return f(v) |
42 return f(v) |
43 except: |
43 except: |
44 return None |
44 return None |
45 return get_function |
45 return get_function |
46 |
46 |
|
47 def gen_get_string(delimiter): |
|
48 STRING_MODEL = re.compile("%(delimiter)s([^%(delimiter)s]*)%(delimiter)s$" % {"delimiter": delimiter}) |
|
49 def get_string(v): |
|
50 result = STRING_MODEL.match(v) |
|
51 if result is not None: |
|
52 return result.group(1) |
|
53 return None |
|
54 return get_string |
|
55 |
47 getinteger = gen_get_function(int) |
56 getinteger = gen_get_function(int) |
48 getfloat = gen_get_function(float) |
57 getfloat = gen_get_function(float) |
49 getstring = gen_get_function(str) |
58 getstring = gen_get_string("'") |
|
59 getwstring = gen_get_string('"') |
50 |
60 |
51 SECOND = 1000000 |
61 SECOND = 1000000 |
52 MINUTE = 60 * SECOND |
62 MINUTE = 60 * SECOND |
53 HOUR = 60 * MINUTE |
63 HOUR = 60 * MINUTE |
54 DAY = 24 * HOUR |
64 DAY = 24 * HOUR |
55 |
65 |
56 IEC_TIME_MODEL = re.compile("(?:(?:T|TIME)#)?(-)?(?:(%(float)s)D_?)?(?:(%(float)s)H_?)?(?:(%(float)s)M(?!S)_?)?(?:(%(float)s)S_?)?(?:(%(float)s)MS)?" % {"float": "[0-9]+(?:\.[0-9]+)?"}) |
66 IEC_TIME_MODEL = re.compile("(?:(?:T|TIME)#)?(-)?(?:(%(float)s)D_?)?(?:(%(float)s)H_?)?(?:(%(float)s)M(?!S)_?)?(?:(%(float)s)S_?)?(?:(%(float)s)MS)?$" % {"float": "[0-9]+(?:\.[0-9]+)?"}) |
57 IEC_DATE_MODEL = re.compile("(?:(?:D|DATE)#)?([0-9]{4})-([0-9]{2})-([0-9]{2})") |
67 IEC_DATE_MODEL = re.compile("(?:(?:D|DATE)#)?([0-9]{4})-([0-9]{2})-([0-9]{2})$") |
58 IEC_DATETIME_MODEL = re.compile("(?:(?:DT|DATE_AND_TIME)#)?([0-9]{4})-([0-9]{2})-([0-9]{2})-([0-9]{2}):([0-9]{2}):([0-9]{2}(?:\.[0-9]+)?)") |
68 IEC_DATETIME_MODEL = re.compile("(?:(?:DT|DATE_AND_TIME)#)?([0-9]{4})-([0-9]{2})-([0-9]{2})-([0-9]{2}):([0-9]{2}):([0-9]{2}(?:\.[0-9]+)?)$") |
59 IEC_TIMEOFDAY_MODEL = re.compile("(?:(?:TOD|TIME_OF_DAY)#)?([0-9]{2}):([0-9]{2}):([0-9]{2}(?:\.[0-9]+)?)") |
69 IEC_TIMEOFDAY_MODEL = re.compile("(?:(?:TOD|TIME_OF_DAY)#)?([0-9]{2}):([0-9]{2}):([0-9]{2}(?:\.[0-9]+)?)$") |
60 |
70 |
61 def gettime(v): |
71 def gettime(v): |
62 result = IEC_TIME_MODEL.match(v.upper()) |
72 result = IEC_TIME_MODEL.match(v.upper()) |
63 if result is not None: |
73 if result is not None: |
64 negative, days, hours, minutes, seconds, milliseconds = result.groups() |
74 negative, days, hours, minutes, seconds, milliseconds = result.groups() |