diff mupdf-source/thirdparty/gumbo-parser/genperf.py @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mupdf-source/thirdparty/gumbo-parser/genperf.py	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,30 @@
+import sys, re
+
+gperf_output = sys.stdin.read()
+
+hash_func = re.search(
+    "static unsigned int\s+hash\s+\((.*?)\)\s{(.*?)\n}",
+    gperf_output, re.DOTALL)
+
+if not hash_func:
+    raise "Failed to detect hash function in GPerf output"
+
+wordlist = re.search(
+    "wordlist\[\]\s+=\s+{(.*?)}",
+    gperf_output, re.DOTALL)
+
+if not wordlist:
+    raise "Failed to detect word list in GPerf output"
+
+def process_wordlist(text):
+    wordlist = [w.strip().replace('"', '') for w in text.split(',')]
+    taglist = [
+        "\tGUMBO_TAG_" + (w.upper().replace('-', '_') if w else 'LAST')
+        for w in wordlist]
+    return taglist
+
+print "static unsigned int tag_hash(%s)\n{%s\n}" % (
+        hash_func.group(1), hash_func.group(2))
+print ""
+print "static const unsigned char kGumboTagMap[] = {\n%s\n};" % (
+        ',\n'.join(process_wordlist(wordlist.group(1))))