chiark / gitweb /
Support application names in the form of '&app_name;'
authorDaniel Martí <mvdan@mvdan.cc>
Mon, 2 Dec 2013 14:09:59 +0000 (15:09 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Mon, 2 Dec 2013 14:09:59 +0000 (15:09 +0100)
fdroidserver/common.py

index d588e1f3e3cd9a0a24afee2eeb9a894a178666a3..b6c7b9c13da6993bd3cfe81cd1af400d4d2824a3 100644 (file)
@@ -459,15 +459,22 @@ class vcs_bzr(vcs):
                 p.communicate()[0].splitlines()]
 
 def retrieve_string(xml_dir, string):
-    if not string.startswith('@string/'):
-        return string.replace("\\'","'")
-    string_search = re.compile(r'.*"'+string[8:]+'".*>([^<]+?)<.*').search
-    for xmlfile in glob.glob(os.path.join(xml_dir, '*.xml')):
-        for line in file(xmlfile):
-            matches = string_search(line)
-            if matches:
-                return retrieve_string(xml_dir, matches.group(1))
-    return ''
+    if string.startswith('@string/'):
+        string_search = re.compile(r'.*"'+string[8:]+'".*>([^<]+?)<.*').search
+        for xmlfile in glob.glob(os.path.join(xml_dir, '*.xml')):
+            for line in file(xmlfile):
+                matches = string_search(line)
+                if matches:
+                    return retrieve_string(xml_dir, matches.group(1))
+    elif string.startswith('&') and string.endswith(';'):
+        string_search = re.compile(r'.*<!ENTITY.*'+string[1:-1]+'.*"([^"]+?)".*>').search
+        for xmlfile in glob.glob(os.path.join(xml_dir, '*.xml')):
+            for line in file(xmlfile):
+                matches = string_search(line)
+                if matches:
+                    return retrieve_string(xml_dir, matches.group(1))
+
+    return string.replace("\\'","'")
 
 # Return list of existing files that will be used to find the highest vercode
 def manifest_paths(app_dir, flavour):