scripts: validation stats script improvements

Improved regex to strip more html/asciiDoc literals from VUID
error messages. Added implicit VUIDs to search when querying a
single VUID string.

Change-Id: Ib7eaf7de51fc23e18fed0fc96eaa6683580b6db4
diff --git a/scripts/vk_validation_stats.py b/scripts/vk_validation_stats.py
index 00bdd2e..784bf2c 100755
--- a/scripts/vk_validation_stats.py
+++ b/scripts/vk_validation_stats.py
@@ -169,7 +169,7 @@
         self.all_vuids = set()
         self.vuid_db = defaultdict(list) # Maps VUID string to list of json-data dicts
         self.apiversion = ""
-        self.re_striptags = re.compile('<.*?>')
+        self.re_striptags = re.compile('<.*?>|&(amp;)+lt;|&(amp;)+gt;')
         self.duplicate_vuids = set()
 
     def read(self):
@@ -204,8 +204,12 @@
                         self.implicit_vuids.add(vuid_string)    # otherwise, implicit
                         vtype = 'implicit'
                     vuid_text = ventry['text']
-                    stripped = re.sub(self.re_striptags, '', vuid_text) # strip tags
-                    stripped = html.unescape(stripped) # unescape html literals (only partially works - because asciiDoctor?)
+                    #if 'amp;' in vuid_text:
+                    #    print(vuid_text)
+                    stripped = re.sub(self.re_striptags, '', vuid_text) # strip tags & literals
+                    stripped = html.unescape(stripped) # anything missed by the regex
+                    #if 'amp;' in stripped:
+                    #    print("  %s" % stripped)
                     self.vuid_db[vuid_string].append({'api':apiname, 'ext':ext, 'type':vtype, 'text':stripped})
         self.all_vuids = self.explicit_vuids | self.implicit_vuids
         self.duplicate_vuids = set({v for v in self.vuid_db if len(self.vuid_db[v]) > 1})
@@ -653,9 +657,14 @@
                 line_list = val_source.vuid_count_dict[get_vuid_status]['file_line']
                 for line in line_list:
                     print('    => %s' % line)
+            elif get_vuid_status in val_source.implicit_vuids:
+                print('  Implemented! (Implicit)')
+                line_list = val_source.vuid_count_dict[get_vuid_status]['file_line']
+                for line in line_list:
+                    print('    => %s' % line)
             else:
                 print('  Not implemented.')
-            if get_vuid_status in val_tests.explicit_vuids:
+            if get_vuid_status in val_tests.all_vuids:
                 print('  Has a test!')
                 test_list = val_tests.vuid_to_tests[get_vuid_status]
                 for test in test_list: