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
|
from __future__ import unicode_literals
from nose.tools import istest, assert_equal
from mammoth.writers.markdown import MarkdownWriter
@istest
def special_markdown_characters_are_escaped():
writer = _create_writer()
writer.text(r"\*")
assert_equal(r"\\\*", writer.as_string())
@istest
def unrecognised_elements_are_treated_as_normal_text():
writer = _create_writer()
writer.start("blah");
writer.text("Hello");
writer.end("blah");
assert_equal("Hello", writer.as_string())
@istest
def paragraphs_are_terminated_with_double_new_line():
writer = _create_writer()
writer.start("p");
writer.text("Hello");
writer.end("p");
assert_equal("Hello\n\n", writer.as_string())
@istest
def h1_elements_are_converted_to_heading_with_leading_hash():
writer = _create_writer()
writer.start("h1");
writer.text("Hello");
writer.end("h1");
assert_equal("# Hello\n\n", writer.as_string())
@istest
def h6_elements_are_converted_to_heading_with_six_leading_hashes():
writer = _create_writer()
writer.start("h6");
writer.text("Hello");
writer.end("h6");
assert_equal("###### Hello\n\n", writer.as_string())
@istest
def br_is_written_as_two_spaces_followed_by_newline():
writer = _create_writer()
writer.text("Hello");
writer.self_closing("br");
assert_equal("Hello \n", writer.as_string())
@istest
def strong_text_is_surrounded_by_two_underscores():
writer = _create_writer()
writer.text("Hello ");
writer.start("strong");
writer.text("World")
writer.end("strong")
assert_equal("Hello __World__", writer.as_string())
@istest
def emphasised_text_is_surrounded_by_one_asterix():
writer = _create_writer()
writer.text("Hello ");
writer.start("em");
writer.text("World")
writer.end("em")
assert_equal("Hello *World*", writer.as_string())
@istest
def anchor_tags_are_written_as_hyperlinks():
writer = _create_writer()
writer.start("a", {"href": "http://example.com"});
writer.text("Hello");
writer.end("a");
assert_equal("[Hello](http://example.com)", writer.as_string())
@istest
def anchor_tags_without_href_attribute_are_treated_as_ordinary_text():
writer = _create_writer()
writer.start("a");
writer.text("Hello");
writer.end("a");
assert_equal("Hello", writer.as_string())
def _create_writer():
return MarkdownWriter()
|