diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-12-03 18:04:34 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-12-03 18:04:34 +0000 |
| commit | 5e1685645c6b0ed81bc27f3cedfeb0608f79f495 (patch) | |
| tree | ba1125db8fa05f1cc8a0ffa6f628ca70e250aa07 /mammoth/docx | |
| parent | 2cbb7baa6615835b7d4cb81dd2300569c0bafd4a (diff) | |
Read overrides from content types
Diffstat (limited to 'mammoth/docx')
| -rw-r--r-- | mammoth/docx/content_types_xml.py | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/mammoth/docx/content_types_xml.py b/mammoth/docx/content_types_xml.py index a2da8e0..a2eb14c 100644 --- a/mammoth/docx/content_types_xml.py +++ b/mammoth/docx/content_types_xml.py @@ -1,9 +1,13 @@ def read_content_types_xml_element(element): extension_defaults = dict(map( _read_default, - element.find_children("content-types:Default")) - ) - return ContentTypes(extension_defaults) + element.find_children("content-types:Default") + )) + overrides = dict(map( + _read_override, + element.find_children("content-types:Override") + )) + return ContentTypes(extension_defaults, overrides) def _read_default(element): @@ -12,10 +16,20 @@ def _read_default(element): return extension, content_type +def _read_override(element): + part_name = element.attributes["PartName"] + content_type = element.attributes["ContentType"] + return part_name.lstrip("/"), content_type + + class ContentTypes(object): - def __init__(self, extension_defaults): + def __init__(self, extension_defaults, overrides): self._extension_defaults = extension_defaults + self._overrides = overrides def find_content_type(self, path): - extension = path.rpartition(".")[2] - return self._extension_defaults.get(extension) + if path in self._overrides: + return self._overrides[path] + else: + extension = path.rpartition(".")[2] + return self._extension_defaults.get(extension) |
