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
/*!
The document model here comprises a document type with nested blocks comprised of blocks and inline
content.
The model contains the following structure.
1. A Document which contains a list of [`BlockContent`](block/enum.BlockContent.html):
1. Some block have no content of their own, such as `BlockContent::ThematicBreak`.
1. Some block content is a basic type, such as `BlockContent::Comment` which contains a
`String`.
1. Some block content contains other block content, such as `BlockContent::Quote`.
1. Most blocks contain a list of `InlineContent`.
1. Some inline have no content of it's own, such as `InlineContent::LineBreak`.
1. Some inline content contains a basic type, such as `InlineContent::Character` which contains a
`char`.
1. Some inline content contains other inline content, such as `InlineContent::Span`.
1. Most inline types contain a single structured type.
1. A Document may also have associated metadata which may, or may not, be interpreted by a writer.
*/
use crateerror;
// ------------------------------------------------------------------------------------------------
// Public Types
// ------------------------------------------------------------------------------------------------
///
/// This trait should be implemented by any type, whether block or inline, that includes.
/// [`InlineContent`](inline/enum.InlineContent.html). This allows for common treatment of such
/// types in writers and similar use cases.
///
///
/// A marker trait denoting that a type, most likely an enum, should be treated as a syle by the
/// type [`HasStyles`](trait.HasStyles.html). All styles **must** support `Default` to denote the
/// *un-styled* case.
///
///
/// This trait should be implemented by any type, whether block or inline, that can be styled. The
/// type parameter `T` denotes the style information to apply.
///
// ------------------------------------------------------------------------------------------------
// Modules
// ------------------------------------------------------------------------------------------------
pub use Document;