mirror of
https://github.com/harfang3d/harfang3d.git
synced 2024-06-16 20:13:03 +00:00
79 lines
1.4 KiB
Python
79 lines
1.4 KiB
Python
import xml.etree.ElementTree as ETree
|
|
from collections import OrderedDict
|
|
|
|
|
|
escaped_symbol_patterns = OrderedDict([
|
|
('|=', '_ior_op_'),
|
|
('&=', '_iand_op_'),
|
|
('+=', '_iadd_op_'),
|
|
('-=', '_isub_op_'),
|
|
('*=', '_imul_op_'),
|
|
('/=', '_idiv_op_'),
|
|
('::', '_namespace_'),
|
|
(':', '_col_'),
|
|
('<=', '_le_'),
|
|
('>=', '_ge_'),
|
|
('==', '_eq_'),
|
|
('!=', '_neq_'),
|
|
('+', '_add_'),
|
|
('-', '_sub_'),
|
|
('*', '_mul_'),
|
|
('/', '_div_'),
|
|
('<', '_lt_'),
|
|
('>', '_gt_'),
|
|
('=', '_copy_'),
|
|
('.', '_dot_'),
|
|
])
|
|
|
|
|
|
def escape_symbol(symbol):
|
|
for pattern, escaped in escaped_symbol_patterns.items():
|
|
symbol = symbol.replace(pattern, escaped)
|
|
if symbol.endswith('_'):
|
|
symbol = symbol[:-1]
|
|
return symbol
|
|
|
|
|
|
# list of UIDs we do not want to include in the documentation
|
|
# TODO load from a file
|
|
blacklist = [
|
|
'string',
|
|
'SurfaceShader_Create',
|
|
'Node_SetUid',
|
|
]
|
|
|
|
|
|
api_tag_symbols = [
|
|
'class',
|
|
'function',
|
|
'enum',
|
|
'constants'
|
|
]
|
|
|
|
|
|
api = None
|
|
api_parent_map = None
|
|
|
|
|
|
def load_tag(tag):
|
|
for child in tag:
|
|
if child.tag in api_tag_symbols:
|
|
uid = child.get('uid')
|
|
if uid and uid not in blacklist:
|
|
if uid not in api:
|
|
api[uid] = []
|
|
api[uid].append(child)
|
|
load_tag(child)
|
|
|
|
|
|
def load_api(path):
|
|
with open(path, "r") as file:
|
|
xml_root = ETree.fromstring(file.read())
|
|
|
|
global api
|
|
api = OrderedDict()
|
|
load_tag(xml_root)
|
|
|
|
global api_parent_map
|
|
api_parent_map = {c: p for p in xml_root.iter() for c in p}
|