#!/usr/bin/env python3 """ Converts entity WHATWG HTML5 entity summary into Text.HTML.Parser.Entities module. Usage: curl https://html.spec.whatwg.org/entities.json | python3 gen_entities.py > src/Text/HTML/Parser/Entities.hs """ import sys import json entities = json.load(sys.stdin) def escape(details): return ''.join(f'\\x{cp:04x}' for cp in details['codepoints']) print(''' {-# LANGUAGE OverloadedStrings #-} -- | N.B. This file is generated by @gen_entities.py@. Do not edit. module Text.HTML.Parser.Entities (entities) where import Data.Text (Text) entities :: [(Text, Text)] entities = [ '''.strip()) print(',\n'.join( f''' ("{name[1:-1]}", "{escape(details)}")''' for name, details in entities.items() )) print(' ]')