diff -r 7685cec9fd3c -r f2ddfa555b0f doc/api/python/escapeddict-pysrc.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doc/api/python/escapeddict-pysrc.html Fri Sep 11 11:54:49 2009 +0100 @@ -0,0 +1,395 @@ + + + + + escapeddict + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + Module escapeddict + + + + + + +
[hide private]
[frames] | no frames]
+
+

Source Code for Module escapeddict

+
+ 1  #============================================================================  
+ 2  #Name        : escapeddict.py  
+ 3  #Part of     : Helium  
+ 4   
+ 5  #Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+ 6  #All rights reserved. 
+ 7  #This component and the accompanying materials are made available 
+ 8  #under the terms of the License "Eclipse Public License v1.0" 
+ 9  #which accompanies this distribution, and is available 
+10  #at the URL "http://www.eclipse.org/legal/epl-v10.html". 
+11  # 
+12  #Initial Contributors: 
+13  #Nokia Corporation - initial contribution. 
+14  # 
+15  #Contributors: 
+16  # 
+17  #Description: 
+18  #=============================================================================== 
+19   
+20  """ This class enables developer to use ${xxx} pattern in their dict and  
+21      get them replaced recursively. 
+22  """ 
+23  import re 
+24  import types 
+25  import UserDict 
+26   
+27   
+
28 -class _CustomArray(list): +
29 """ Internal class +30 """ +
31 - def __str__(self): +
32 string = "" +33 for elem in self: +34 string += " "+elem +35 return string +
36 +37 +
38 -class EscapedDict(UserDict.UserDict): +
39 """ Implements a dictionary that escapes the key values recursively. """ +40 +
41 - def __init__(self, dict={}, failonerror=False): +
42 UserDict.UserDict.__init__(self, dict) +43 self.__failonerror = failonerror +
44 +
45 - def __getitem__(self, key): +
46 """ Overrides the usual __getitem__ to insert values of other keys referenced in this key's +47 value. """ +48 if key in self.data: +49 value = self.data[key] +50 result = value +51 if isinstance(value, types.ListType): +52 result = _CustomArray() +53 for elem in value: +54 (string, changes) = re.subn(r'\${(?P<name>[._a-zA-Z0-9]+)}', r'%(\g<name>)s', elem) +55 if changes > 0: +56 result.append(string % self) +57 else: +58 result.append(elem) +59 else: +60 (string, changes) = re.subn(r'\${(?P<name>[._a-zA-Z0-9]+)}', r'%(\g<name>)s', value) +61 if changes > 0: +62 result = string % self +63 return result +64 elif not self.__failonerror: +65 return "${%s}" % key +66 raise KeyError("Could not find key '%s'" % key) +
67 +68 +69 +
70 -def escapeString(input_string, config): +
71 """ Escape a string recursively. +72 +73 :param input_string: the string to be escaped. +74 :param config: a dictionnary containing the values to escape. +75 :return: the escaped string. +76 """ +77 data = EscapedDict(config) +78 match = re.search(r'\${(?P<name>[._a-zA-Z0-9]+)}', input_string) +79 if match != None: +80 for property_name in match.groups(): +81 property_value = data[property_name] +82 property_value = re.sub(r'\\', r'\\\\', property_value) +83 input_string = re.sub('\${' + property_name + '}', property_value, input_string) +84 return input_string +
85 +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + +