git.iko.soy/typeable/html-parse
on master help sign in
typeable/html-parse/gen_entities.py
36 lines 755 B history raw
1#!/usr/bin/env python3
3"""
4Converts entity WHATWG HTML5 entity summary into
5Text.HTML.Parser.Entities module.
7Usage:
9 curl https://html.spec.whatwg.org/entities.json | python3 gen_entities.py > src/Text/HTML/Parser/Entities.hs
11"""
13import sys
14import json
16entities = json.load(sys.stdin)
18def escape(details):
19 return ''.join(f'\\x{cp:04x}' for cp in details['codepoints'])
21print('''
22{-# LANGUAGE OverloadedStrings #-}
24-- | N.B. This file is generated by @gen_entities.py@. Do not edit.
25module Text.HTML.Parser.Entities (entities) where
27import Data.Text (Text)
29entities :: [(Text, Text)]
30entities = [
31'''.strip())
32print(',\n'.join(
33 f''' ("{name[1:-1]}", "{escape(details)}")'''
34 for name, details in entities.items()
35))
36print(' ]')