view mupdf-source/thirdparty/gumbo-parser/genperf.py @ 29:f76e6575dca9 v1.26.4+1

+++++ v1.26.4+1
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 19 Sep 2025 19:59:23 +0200
parents b50eed0cc0ef
children
line wrap: on
line source

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))))