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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# coding=utf-8
from __future__ import unicode_literals
from nose.tools import istest, assert_equal
from .testing import test_path
import mammoth
@istest
def docx_containing_one_paragraph_is_converted_to_single_p_element():
with open(test_path("single-paragraph.docx"), "rb") as fileobj:
result = mammoth.convert_to_html(fileobj=fileobj)
assert_equal("<p>Walking on imported air</p>", result.value)
assert_equal([], result.messages)
@istest
def can_read_xml_files_with_utf8_bom():
with open(test_path("utf8-bom.docx"), "rb") as fileobj:
result = mammoth.convert_to_html(fileobj=fileobj)
assert_equal("<p>This XML has a byte order mark.</p>", result.value)
assert_equal([], result.messages)
@istest
def inline_images_are_included_in_output():
with open(test_path("tiny-picture.docx"), "rb") as fileobj:
result = mammoth.convert_to_html(fileobj=fileobj)
assert_equal("""<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAOvgAADr4B6kKxwAAAABNJREFUKFNj/M+ADzDhlWUYqdIAQSwBE8U+X40AAAAASUVORK5CYII=" /></p>""", result.value)
assert_equal([], result.messages)
@istest
def simple_list_is_converted_to_list_elements():
with open(test_path("simple-list.docx"), "rb") as fileobj:
result = mammoth.convert_to_html(fileobj=fileobj)
assert_equal([], result.messages)
assert_equal("<ul><li>Apple</li><li>Banana</li></ul>", result.value)
@istest
def word_tables_are_converted_to_html_tables():
expected_html = ("<p>Above</p>" +
"<table>" +
"<tr><td><p>Top left</p></td><td><p>Top right</p></td></tr>" +
"<tr><td><p>Bottom left</p></td><td><p>Bottom right</p></td></tr>" +
"</table>" +
"<p>Below</p>")
with open(test_path("tables.docx"), "rb") as fileobj:
result = mammoth.convert_to_html(fileobj=fileobj)
assert_equal([], result.messages)
assert_equal(expected_html, result.value)
@istest
def footnotes_are_appended_to_text():
# TODO: don't duplicate footnotes with multiple references
expected_html = ('<p>Ouch' +
'<sup><a href="#doc-42-footnote-1" id="doc-42-footnote-ref-1">[1]</a></sup>.' +
'<sup><a href="#doc-42-footnote-2" id="doc-42-footnote-ref-2">[2]</a></sup></p>' +
'<ol><li id="doc-42-footnote-1"><p> A tachyon walks into a bar. <a href="#doc-42-footnote-ref-1">↑</a></p></li>' +
'<li id="doc-42-footnote-2"><p> Fin. <a href="#doc-42-footnote-ref-2">↑</a></p></li></ol>')
with open(test_path("footnotes.docx"), "rb") as fileobj:
result = mammoth.convert_to_html(fileobj=fileobj, id_prefix="doc-42")
assert_equal([], result.messages)
assert_equal(expected_html, result.value)
@istest
def endnotes_are_appended_to_text():
expected_html = ('<p>Ouch' +
'<sup><a href="#doc-42-endnote-2" id="doc-42-endnote-ref-2">[1]</a></sup>.' +
'<sup><a href="#doc-42-endnote-3" id="doc-42-endnote-ref-3">[2]</a></sup></p>' +
'<ol><li id="doc-42-endnote-2"><p> A tachyon walks into a bar. <a href="#doc-42-endnote-ref-2">↑</a></p></li>' +
'<li id="doc-42-endnote-3"><p> Fin. <a href="#doc-42-endnote-ref-3">↑</a></p></li></ol>')
with open(test_path("endnotes.docx"), "rb") as fileobj:
result = mammoth.convert_to_html(fileobj=fileobj, id_prefix="doc-42")
assert_equal([], result.messages)
assert_equal(expected_html, result.value)
@istest
def transform_document_is_applied_to_document_before_conversion():
def transform_document(document):
document.children[0].style_id = "Heading1"
return document
with open(test_path("single-paragraph.docx"), "rb") as fileobj:
result = mammoth.convert_to_html(fileobj=fileobj, transform_document=transform_document)
assert_equal("<h1>Walking on imported air</h1>", result.value)
assert_equal([], result.messages)
@istest
def docx_containing_one_paragraph_can_be_converted_to_markdown():
with open(test_path("single-paragraph.docx"), "rb") as fileobj:
result = mammoth.convert_to_markdown(fileobj=fileobj)
assert_equal("Walking on imported air\n\n", result.value)
assert_equal([], result.messages)
@istest
def can_extract_raw_text():
with open(test_path("simple-list.docx"), "rb") as fileobj:
result = mammoth.extract_raw_text(fileobj=fileobj)
assert_equal([], result.messages)
assert_equal("Apple\n\nBanana\n\n", result.value)
|