[clang] 3ab238a - [AST Matchers] Update dump_ast_matchers.py to query only class index page.
Yitzhak Mandelbaum via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 8 10:45:48 PDT 2021
Author: James King
Date: 2021-10-08T17:45:10Z
New Revision: 3ab238af4fa44a12ff3d479dc7fac50332ad2875
URL: https://github.com/llvm/llvm-project/commit/3ab238af4fa44a12ff3d479dc7fac50332ad2875
DIFF: https://github.com/llvm/llvm-project/commit/3ab238af4fa44a12ff3d479dc7fac50332ad2875.diff
LOG: [AST Matchers] Update dump_ast_matchers.py to query only class index page.
It may be possible to avoid relying on accessing many individual class pages,
by instead scanning the class index page at
https://clang.llvm.org/doxygen/classes.html. This updates the script to do so,
and includes updates to `LibASTMatchersReference.html` generated by the
modified script.
Reviewed By: aaron.ballman, sammccall
Differential Revision: https://reviews.llvm.org/D111332
Added:
Modified:
clang/docs/tools/dump_ast_matchers.py
Removed:
################################################################################
diff --git a/clang/docs/tools/dump_ast_matchers.py b/clang/docs/tools/dump_ast_matchers.py
index 2a26d10f7a04d..2ac0af1f38bca 100755
--- a/clang/docs/tools/dump_ast_matchers.py
+++ b/clang/docs/tools/dump_ast_matchers.py
@@ -10,6 +10,12 @@
except ImportError:
from urllib2 import urlopen
+CLASS_INDEX_PAGE_URL = 'https://clang.llvm.org/doxygen/classes.html'
+try:
+ CLASS_INDEX_PAGE = urlopen(CLASS_INDEX_PAGE_URL).read()
+except Exception as e:
+ raise Exception('Unable to get %s: %s' % (CLASS_INDEX_PAGE_URL, e))
+
MATCHERS_FILE = '../../include/clang/ASTMatchers/ASTMatchers.h'
# Each matcher is documented in one row of the form:
@@ -40,15 +46,18 @@ def esc(text):
text = re.sub(r'<', '<', text)
text = re.sub(r'>', '>', text)
def link_if_exists(m):
+ """Wrap a likely AST node name in a link to its clang docs.
+
+ We want to do this only if the page exists, in which case it will be
+ referenced from the class index page.
+ """
name = m.group(1)
url = 'https://clang.llvm.org/doxygen/classclang_1_1%s.html' % name
if url not in doxygen_probes:
- try:
- print('Probing %s...' % url)
- urlopen(url)
- doxygen_probes[url] = True
- except:
- doxygen_probes[url] = False
+ search_str = 'href="classclang_1_1%s.html"' % name
+ doxygen_probes[url] = search_str in CLASS_INDEX_PAGE
+ if not doxygen_probes[url]:
+ print('Did not find %s in class index page' % name)
if doxygen_probes[url]:
return r'Matcher<<a href="%s">%s</a>>' % (url, name)
else:
More information about the cfe-commits
mailing list