1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum HeadingStyle {
6 Underlined,
8 Atx,
10 AtxClosed,
12}
13
14impl Default for HeadingStyle {
15 fn default() -> Self {
16 Self::Atx
17 }
18}
19
20#[derive(Debug, Clone, Copy, PartialEq, Eq)]
22pub enum ListIndentType {
23 Spaces,
24 Tabs,
25}
26
27impl Default for ListIndentType {
28 fn default() -> Self {
29 Self::Spaces
30 }
31}
32
33#[derive(Debug, Clone, Copy, PartialEq, Eq)]
35pub enum WhitespaceMode {
36 Normalized,
37 Strict,
38}
39
40impl Default for WhitespaceMode {
41 fn default() -> Self {
42 Self::Normalized
43 }
44}
45
46#[derive(Debug, Clone, Copy, PartialEq, Eq)]
48pub enum NewlineStyle {
49 Spaces,
51 Backslash,
53}
54
55impl Default for NewlineStyle {
56 fn default() -> Self {
57 Self::Spaces
58 }
59}
60
61#[derive(Debug, Clone, Copy, PartialEq, Eq)]
63pub enum CodeBlockStyle {
64 Indented,
66 Backticks,
68 Tildes,
70}
71
72impl Default for CodeBlockStyle {
73 fn default() -> Self {
74 Self::Indented
75 }
76}
77
78#[derive(Debug, Clone, Copy, PartialEq, Eq)]
80pub enum HighlightStyle {
81 DoubleEqual,
83 Html,
85 Bold,
87 None,
89}
90
91impl Default for HighlightStyle {
92 fn default() -> Self {
93 Self::DoubleEqual
94 }
95}
96
97#[derive(Debug, Clone, Copy, PartialEq, Eq)]
99pub enum PreprocessingPreset {
100 Minimal,
101 Standard,
102 Aggressive,
103}
104
105impl Default for PreprocessingPreset {
106 fn default() -> Self {
107 Self::Standard
108 }
109}
110
111#[derive(Debug, Clone)]
113pub struct ConversionOptions {
114 pub heading_style: HeadingStyle,
116
117 pub list_indent_type: ListIndentType,
119
120 pub list_indent_width: usize,
122
123 pub bullets: String,
125
126 pub strong_em_symbol: char,
128
129 pub escape_asterisks: bool,
131
132 pub escape_underscores: bool,
134
135 pub escape_misc: bool,
137
138 pub escape_ascii: bool,
140
141 pub code_language: String,
143
144 pub autolinks: bool,
146
147 pub default_title: bool,
149
150 pub br_in_tables: bool,
152
153 pub highlight_style: HighlightStyle,
155
156 pub extract_metadata: bool,
158
159 pub whitespace_mode: WhitespaceMode,
161
162 pub strip_newlines: bool,
164
165 pub wrap: bool,
167
168 pub wrap_width: usize,
170
171 pub convert_as_inline: bool,
173
174 pub sub_symbol: String,
176
177 pub sup_symbol: String,
179
180 pub newline_style: NewlineStyle,
182
183 pub code_block_style: CodeBlockStyle,
185
186 pub keep_inline_images_in: Vec<String>,
188
189 pub preprocessing: PreprocessingOptions,
191
192 pub encoding: String,
194
195 pub debug: bool,
197
198 pub strip_tags: Vec<String>,
200}
201
202impl Default for ConversionOptions {
203 fn default() -> Self {
204 Self {
205 heading_style: HeadingStyle::default(),
206 list_indent_type: ListIndentType::default(),
207 list_indent_width: 2,
208 bullets: "-".to_string(),
209 strong_em_symbol: '*',
210 escape_asterisks: false,
211 escape_underscores: false,
212 escape_misc: false,
213 escape_ascii: false,
214 code_language: String::new(),
215 autolinks: true,
216 default_title: false,
217 br_in_tables: false,
218 highlight_style: HighlightStyle::default(),
219 extract_metadata: true,
220 whitespace_mode: WhitespaceMode::default(),
221 strip_newlines: false,
222 wrap: false,
223 wrap_width: 80,
224 convert_as_inline: false,
225 sub_symbol: String::new(),
226 sup_symbol: String::new(),
227 newline_style: NewlineStyle::Spaces,
228 code_block_style: CodeBlockStyle::default(),
229 keep_inline_images_in: Vec::new(),
230 preprocessing: PreprocessingOptions::default(),
231 encoding: "utf-8".to_string(),
232 debug: false,
233 strip_tags: Vec::new(),
234 }
235 }
236}
237
238#[derive(Debug, Clone)]
240pub struct PreprocessingOptions {
241 pub enabled: bool,
243
244 pub preset: PreprocessingPreset,
246
247 pub remove_navigation: bool,
249
250 pub remove_forms: bool,
252}
253
254impl Default for PreprocessingOptions {
255 fn default() -> Self {
256 Self {
257 enabled: false,
258 preset: PreprocessingPreset::default(),
259 remove_navigation: true,
260 remove_forms: true,
261 }
262 }
263}