summaryrefslogtreecommitdiffstats
path: root/python/l10n/convert_xul_to_fluent/lib/dtd.py
blob: 85348e62ff2eac6e23f4a7396c3ec5f0924da244 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from __future__ import absolute_import
from io import StringIO
from lxml import etree
from .utils import read_file


def get_dtds(sources, base_path):
    entries = {}
    for source in sources:
        dtd = get_dtd(source, base_path)
        for entry in dtd:
            entries[entry] = {"value": dtd[entry], "file": source}
    return entries


def get_dtd(dtd_source, base_path):
    entries = {}

    source = read_file(dtd_source, base_path)

    dtd = etree.DTD(StringIO(source.decode("utf-8")))
    for entity in dtd.entities():
        entries[entity.name] = entity.content
    return entries