dialogs/ForceVariableDialog.py
changeset 878 37256069baed
parent 814 5743cbdff669
child 941 b6e93549de2e
equal deleted inserted replaced
877:7e695249be8d 878:37256069baed
    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()
   134                 "DWORD": getinteger,
   144                 "DWORD": getinteger,
   135                 "LWORD": getinteger,
   145                 "LWORD": getinteger,
   136                 "REAL": getfloat,
   146                 "REAL": getfloat,
   137                 "LREAL": getfloat,
   147                 "LREAL": getfloat,
   138                 "STRING": getstring,
   148                 "STRING": getstring,
   139                 "WSTRING": getstring,
   149                 "WSTRING": getwstring,
   140                 "TIME": gettime,
   150                 "TIME": gettime,
   141                 "DATE": getdate,
   151                 "DATE": getdate,
   142                 "DT": getdatetime,
   152                 "DT": getdatetime,
   143                 "TOD": gettimeofday}
   153                 "TOD": gettimeofday}
   144 
   154