summaryrefslogtreecommitdiffstats
path: root/scripts/detect_missing_analyse_text.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--scripts/detect_missing_analyse_text.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/scripts/detect_missing_analyse_text.py b/scripts/detect_missing_analyse_text.py
new file mode 100644
index 0000000..c377b0b
--- /dev/null
+++ b/scripts/detect_missing_analyse_text.py
@@ -0,0 +1,48 @@
+"""
+ detect_missing_analyse_text
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+import sys
+
+from pygments.lexers import get_all_lexers, find_lexer_class
+from pygments.lexer import Lexer
+
+import argparse
+
+
+def main(args):
+ uses = {}
+
+ for name, aliases, filenames, mimetypes in get_all_lexers(plugins=False):
+ cls = find_lexer_class(name)
+ if not cls.aliases and not args.skip_no_aliases:
+ print(cls, "has no aliases")
+ for f in filenames:
+ uses.setdefault(f, []).append(cls)
+
+ ret = 0
+ for k, v in uses.items():
+ if len(v) > 1:
+ # print("Multiple for", k, v)
+ for i in v:
+ if i.analyse_text is None:
+ print(i, "has a None analyse_text")
+ ret |= 1
+ elif Lexer.analyse_text.__doc__ == i.analyse_text.__doc__:
+ print(i, "needs analyse_text, multiple lexers for", k)
+ ret |= 2
+ return ret
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--skip-no-aliases',
+ help='Skip checks for a lexer with no aliases',
+ action='store_true',
+ default=False)
+ args = parser.parse_args()
+ sys.exit(main(args))