diff -r 7e695249be8d -r 37256069baed dialogs/ForceVariableDialog.py --- a/dialogs/ForceVariableDialog.py Mon Nov 05 20:16:45 2012 +0100 +++ b/dialogs/ForceVariableDialog.py Thu Nov 08 18:23:32 2012 +0100 @@ -44,19 +44,29 @@ return None return get_function +def gen_get_string(delimiter): + STRING_MODEL = re.compile("%(delimiter)s([^%(delimiter)s]*)%(delimiter)s$" % {"delimiter": delimiter}) + def get_string(v): + result = STRING_MODEL.match(v) + if result is not None: + return result.group(1) + return None + return get_string + getinteger = gen_get_function(int) getfloat = gen_get_function(float) -getstring = gen_get_function(str) +getstring = gen_get_string("'") +getwstring = gen_get_string('"') SECOND = 1000000 MINUTE = 60 * SECOND HOUR = 60 * MINUTE DAY = 24 * HOUR -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]+)?"}) -IEC_DATE_MODEL = re.compile("(?:(?:D|DATE)#)?([0-9]{4})-([0-9]{2})-([0-9]{2})") -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]+)?)") -IEC_TIMEOFDAY_MODEL = re.compile("(?:(?:TOD|TIME_OF_DAY)#)?([0-9]{2}):([0-9]{2}):([0-9]{2}(?:\.[0-9]+)?)") +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]+)?"}) +IEC_DATE_MODEL = re.compile("(?:(?:D|DATE)#)?([0-9]{4})-([0-9]{2})-([0-9]{2})$") +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]+)?)$") +IEC_TIMEOFDAY_MODEL = re.compile("(?:(?:TOD|TIME_OF_DAY)#)?([0-9]{2}):([0-9]{2}):([0-9]{2}(?:\.[0-9]+)?)$") def gettime(v): result = IEC_TIME_MODEL.match(v.upper()) @@ -136,7 +146,7 @@ "REAL": getfloat, "LREAL": getfloat, "STRING": getstring, - "WSTRING": getstring, + "WSTRING": getwstring, "TIME": gettime, "DATE": getdate, "DT": getdatetime,