dialogs/ForceVariableDialog.py
changeset 878 37256069baed
parent 814 5743cbdff669
child 941 b6e93549de2e
--- 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,