forked from Builditluc/wiki-tui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
wiki-tui.uxf
538 lines (471 loc) · 26.9 KB
/
wiki-tui.uxf
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
<diagram program="umletino" version="14.4.0-SNAPSHOT"><zoom_level>10</zoom_level><help_text></help_text><element><id>UMLClass</id><coordinates><x>410</x><y>4</y><w>280</w><h>380</h></coordinates><panel_attributes>wiki::api::search::SearchBuilder
--
-query: String
-namespace: usize
-limit: usize
-offset: usize
-info: SearchMetadata
-prop: SearchProperties
-sort: SearchSortOrder
--
+new(): Self
+query(&self, String): &self
+namespace(&self, usize): &self
+limit(&self, usize): &self
+offset(&self, usize): &self
+info(&self, SearchMetadata): &self
+prop(&self, SearchProperties): &self
+sort(&self, SearchSortOrder): &self
+search(&self): Result<Search>
-build_url(): &str
-make_request(&str, Client): Result<Response>
-deserialize_response(String): Result<Search>
-.
+default(): Self</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>210</x><y>4</y><w>190</w><h>200</h></coordinates><panel_attributes>wiki::api::search::SearchMetadata
--
-total_hits: bool
-suggestion: bool
-rewritten_query: bool
--
+new(): Self
+total_hits()
+suggestion()
+rewritten_query()
+build(&self): String
-.
+default(): Self</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>290</x><y>194</y><w>140</w><h>60</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>120;40;10;40;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>0</x><y>4</y><w>190</w><h>560</h></coordinates><panel_attributes>wiki::api::search::SearchProperties
--
-size: bool
-wordcount: bool
-timestamp: bool
-snippet: bool
-title_snippet: bool
-redirect_title: bool
-redirect_snippet: bool
-section_title: bool
-section_snippet: bool
-is_file_match: bool
-category_snippet: bool
--
+new(): Self
+size()
+wordcount()
+timestamp()
+snippet()
+title_snippet()
+redirect_title()
+redirect_snippet()
+section_title()
+section_snippet()
+is_file_match()
+category_snippet()
+build(&self): String
-.
+default(): Self</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>180</x><y>224</y><w>250</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>230;10;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>210</x><y>264</y><w>190</w><h>290</h></coordinates><panel_attributes><<Enum>>
wiki::api::search::SearchSortOrder
--
+CreateTimestampAscending
+CreateTimestampDescending
+IncomingLinksAscending
+IncomingLinksDescending
+LastEditAscending
+LastEditDescending
+JustMatch
+None
+Random
+Relevance
+UserRandom
-.
+default(): Self
+fmt(fmt::Formatter): fmt::Result</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>290</x><y>225</y><w>140</w><h>60</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>120;10;10;10;10;40</additional_attributes></element><element><id>UMLClass</id><coordinates><x>710</x><y>190</y><w>200</w><h>160</h></coordinates><panel_attributes>wiki::api::search::Search
--
-search_offset: usize
-info: SearchInfo
-results: Vec<SearchResult>
--
+new(): Self
+get_search_offset(): usize
+get_info(): &SearchInfo
+get_results(): Vec<SearchResult>
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>930</x><y>0</y><w>220</w><h>630</h></coordinates><panel_attributes>wiki::api::search::SearchResult
--
-namespace: usize
-title: String
-page_id: i32
-size: Option<i32>
-wordcount: Option<i32>
-timestamp: Option<String>
-snippet: Option<String>
-title_snippet: Option<String>
-category_snippet: Option<String>
-redirect_title: Option<String>
-redirect_snippet: Option<String>
-section_title: Option<String>
-section_snippet: Option<String>
-is_file_match: Option<bool>
--
+new(): Self
+get_namespace(): &usize
+get_title(): &str
+get_page_id(): &i32
+get_size(): Option<&i32>
+get_wordcount(): Option<&i32>
+get_timestamp(): Option<&str>
+get_snippet(): Option<&str>
+get_title_snippet(): Option<&str>
+get_category_snippet(): Option<&str>
+get_redirect_title(): Option<&str>
+get_redirect_snippet(): Option<&str>
+get_section_title(): Option<&str>
+get_section_snippet(): Option<&str>
+is_file_match(): Option<bool></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>700</x><y>1</y><w>220</w><h>150</h></coordinates><panel_attributes>wiki::api::search::SearchInfo
--
-total_hits: Option<i32>
-suggestion: Option<&str>
-rewritten_query: Option<&str>
--
+new(): Self
+get_total_hits(): Option<&i32>
+get_suggestion(): Option<&str>
+get_rewritten_query(): Option<&str></panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>850</x><y>141</y><w>30</w><h>70</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;50;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>850</x><y>161</y><w>100</w><h>50</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;30;10;10;80;10</additional_attributes></element><element><id>Relation</id><coordinates><x>680</x><y>221</y><w>50</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>30;10;10;10</additional_attributes></element><element><id>UMLNote</id><coordinates><x>410</x><y>421</y><w>160</w><h>70</h></coordinates><panel_attributes>Not the whole data will be
used by wiki-tui but it's
nice to have</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>640</x><y>391</y><w>280</w><h>280</h></coordinates><panel_attributes>wiki::api::search::tests
--
-test_properties_build()
-test_properties_complete_build()
-test_properties_some_build()
--
-test_metadata_build()
-test_metadata_complete_build()
-test_metadata_some_build()
--
-test_sort_order_default()
-test_sort_order_format()
--
-test_builder_default()
-test_builder_set_values()
-test_builder_correct_url()
-test_builder_deserialize_correct()
-test_builder_deserialize_invalid_fields()
-test_builder_deserialize_missing_fields()
-test_builder_namespace_invalid()
-test_builder_limit_invalid()</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>0</x><y>682</y><w>260</w><h>220</h></coordinates><panel_attributes>wiki::api::article::ArticleBuilder
--
-parser: Parser
-page_id: i32
--
+new(): Self
+parser(Parser): &self
+page_id(i32): &self
+build(&self): Result<Article>
-build_url(): &str
-make_request(&str, Client): Result<Response>
-parse_response(String): Result<Article>
-.
+default(): Self</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>371</x><y>590</y><w>170</w><h>60</h></coordinates><panel_attributes>/Parser/
--
+new(&ParserConfig): Self
+parse(String): Result<Article></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>321</x><y>680</y><w>270</w><h>120</h></coordinates><panel_attributes>wiki::parser::DefaultParser
--
-config: &ParserConfig
--
-parse_toc(String): Option<TableOfContents>
-parse_element(String): Option<ArticleElement>
-.
+new(&ParserConfig): Self
+parse(String): Result<Article></panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>451</x><y>640</y><w>30</w><h>60</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;40;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>251</x><y>690</y><w>90</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;70;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>321</x><y>820</y><w>300</w><h>120</h></coordinates><panel_attributes>wiki::api::article::Article
--
-elements: Vec<ArticleElement>
-toc: Option<TableOfContents>
--
+new([ArticleElement], Option<TableOfContents>): Self
+get_elements(): &Vec<ArticleElemet>
+get_toc(): Option<&TableOfContents></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>641</x><y>820</y><w>300</w><h>150</h></coordinates><panel_attributes>wiki::api::article::ArticleElement
--
- content: String
- type: ArticleElementType
- link_target: Option<String>
--
+new(String, ArticleElementType, Option<String>): Self
+get_content(): &str
+get_type(): &ArticleElementType
+get_link_target(): Option<&str></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>641</x><y>680</y><w>200</w><h>120</h></coordinates><panel_attributes><<Enum>>
wiki::api::article::ArticleElementType
--
+Link
+Text
+Header
+Bold
+Italic</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>321</x><y>970</y><w>240</w><h>120</h></coordinates><panel_attributes>wiki::api::article::TableOfContents
--
-title: String
-items: Vec<TableOfContentsItem>
--
+new(String, [TableOfContentsItem]): Self
+get_title(): &str
+get_items(): &Vec<TableOfContentsItem>
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>321</x><y>1120</y><w>320</w><h>150</h></coordinates><panel_attributes>wiki::api::article::TableOfContentsItem
--
-number: i32
-text: String
-sub_items: Option<Vec<TableOfContentsItem>>
--
+new(i32, String, Option<Vec<TableOfContentsItem>>): Self
+get_number(): &i32
+get_text(): &str
+get_sub_items(): Option<&Vec<TableOfContentsItem>></panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>611</x><y>880</y><w>50</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;30;10</additional_attributes></element><element><id>Relation</id><coordinates><x>751</x><y>790</y><w>30</w><h>50</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;30;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>451</x><y>790</y><w>30</w><h>50</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;10;30</additional_attributes></element><element><id>Relation</id><coordinates><x>441</x><y>930</y><w>30</w><h>60</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;10;40</additional_attributes></element><element><id>Relation</id><coordinates><x>441</x><y>1080</y><w>30</w><h>60</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;10;40</additional_attributes></element><element><id>UMLClass</id><coordinates><x>0</x><y>931</y><w>280</w><h>400</h></coordinates><panel_attributes>wiki::api::article::tests
--
-test_parser_parse_link()
-test_parser_parse_text()
-test_parser_parse_header()
-test_parser_parse_bold()
-test_parser_parse_italic()
-test_parser_parse_list()
-test_parser_parse_code_block()
-test_parser_incorrect_html()
-test_parser_title_missing()
-test_parser_config_toc()
-test_parser_config_headers()
-test_parser_config_paragraphs()
-test_parser_config_lists()
-test_parser_config_code_blocks()
-test_parser_toc_missing()
-test_parser_toc_correct()
-test_parser_toc_nested()
--
-test_builder_default()
-test_builder_set_values()
-test_builder_correct_url()
-test_builder_parse_correct()</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLNote</id><coordinates><x>211</x><y>590</y><w>140</w><h>70</h></coordinates><panel_attributes>ParserConfig is created
seperately</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1500</x><y>0</y><w>280</w><h>370</h></coordinates><panel_attributes>config::Config
--
+api_config: ApiConfig
+theme: Theme
+logging: Logging
+parser: ParserConfig
-config_path: PathBuf
-args: Cli
--
+new(): Self
-load_config()
-load_or_create_config_paths(): Result<bool>
-load_api_config(&UserApiConfig)
-load_theme(&UserTheme)
-load_logging(&UserLogging)
-load_parser(&UserParserConfig)
-load_view_theme(&UserViewTheme): ViewTheme
-create_view_theme(): ViewTheme
-parse_color(String): Result<Color>
-get_args(): &Cli
-.
+default(): Self </panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1840</x><y>2</y><w>220</w><h>260</h></coordinates><panel_attributes>config::Theme
--
+text: Color
+title: Color
+highlight: Color
+background: Color
+search_match: Color
+highlight_text: Color
+highlight_inactive: Color
+search_bar: Option<ViewTheme>
+search_results: Option<ViewTheme>
+search_preview: Option<ViewTheme>
+article_view: Option<ViewTheme>
+toc_view: Option<ViewTheme>
--
+to_theme(): cursive::theme::Theme</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>2090</x><y>2</y><w>200</w><h>150</h></coordinates><panel_attributes>config::ViewTheme
--
+background: Color
+text: Color
+title: Color
+secondary: Color
+highlight: Color
+highlight_text: Color
+highlight_inactive: Color
--
+to_theme(): cursive::theme::Theme</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>2050</x><y>62</y><w>60</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;40;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1770</x><y>162</y><w>90</w><h>140</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;40;10;40;120;70;120</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1840</x><y>272</y><w>220</w><h>50</h></coordinates><panel_attributes>config::ApiConfig
--
+base_url: String</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1840</x><y>332</y><w>220</w><h>80</h></coordinates><panel_attributes>config::Logging
--
+enabled: bool
+log_dir: PathBuf
+log_level: LevelFilter</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1840</x><y>422</y><w>220</w><h>100</h></coordinates><panel_attributes>config::ParserConfig
--
+toc: bool
+headers: bool
+paragraphs: bool
+lists: bool
+code_blocks: bool</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1770</x><y>162</y><w>90</w><h>200</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;40;10;40;180;70;180</additional_attributes></element><element><id>Relation</id><coordinates><x>1770</x><y>162</y><w>90</w><h>290</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;40;10;40;270;70;270</additional_attributes></element><element><id>Relation</id><coordinates><x>1770</x><y>162</y><w>90</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;70;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1170</x><y>2</y><w>250</w><h>240</h></coordinates><panel_attributes>config::UserTheme
--
+text: Option<String>
+title: Option<String>
+highlight: Option<String>
+background: Option<String>
+search_match: Option<String>
+highlight_text: Option<String>
+highlight_inactive: Option<String>
+search_bar: Option<UserViewTheme>
+search_results: Option<UserViewTheme>
+search_preview: Option<UserViewTheme>
+article_view: Option<UserViewTheme>
+toc_view: Option<UserViewTheme></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1200</x><y>252</y><w>220</w><h>50</h></coordinates><panel_attributes>config::UserApiConfig
--
-base_url: Option<String></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1200</x><y>312</y><w>220</w><h>80</h></coordinates><panel_attributes>config::UserLogging
--
-enabled: Option<bool>
-log_dir: Option<String>
-log_level: Option<String></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1200</x><y>402</y><w>220</w><h>100</h></coordinates><panel_attributes>config::UserParserConfig
--
-toc: Option<bool>
-headers: Option<bool>
-paragraphs: Option<bool>
-lists: Option<bool>
-code_blocks: Option<bool></panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1411</x><y>162</y><w>110</w><h>140</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>90;10;50;10;50;120;10;120</additional_attributes></element><element><id>Relation</id><coordinates><x>1411</x><y>162</y><w>110</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>90;10;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1411</x><y>162</y><w>110</w><h>200</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>90;10;50;10;50;180;10;180</additional_attributes></element><element><id>Relation</id><coordinates><x>1411</x><y>162</y><w>110</w><h>290</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>90;10;50;10;50;270;10;270</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1530</x><y>402</y><w>220</w><h>90</h></coordinates><panel_attributes>config::UserConfig
--
-api: Option<UserApiConfig>
-theme: Option<UserTheme>
-logging: Option<UserLogging>
-parser: Option<UserParserConfig></panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1630</x><y>362</y><w>30</w><h>60</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;10;40</additional_attributes></element><element><id>UMLClass</id><coordinates><x>2090</x><y>170</y><w>250</w><h>340</h></coordinates><panel_attributes>config::tests
--
-test_load_theme_correct()
-test_load_theme_format_error()
-test_load_logging_correct()
-test_load_logging_format_error()
-test_load_parser_correct()
-test_load_parser_format_error()
-test_load_api_correct()
-test_load_api_format_error()
-test_load_view_theme_correct()
-test_create_view_theme_correct()
-test_parse_color_hex()
-test_parse_color_name()
-test_parse_color_incorrect()
--
-test_config_theme_to_cursive_theme()
-test_config_view_theme_to_cursive_theme()
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1170</x><y>550</y><w>350</w><h>100</h></coordinates><panel_attributes>ui::article
--
+on_article_submit(&mut Cursive, &ArticleResultPreview)
+on_link_submit(&mut Cursive, target: &str)
-open_link(&mut Cursive, String): Result<()>
-display_article(&mut Cursive, wiki::article::Article): Result<()>
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1170</x><y>670</y><w>350</w><h>60</h></coordinates><panel_attributes>ui::utils
--
+remove_view_from_layout(&mut Cursive, &str, &str): Result<()>
+change_theme(Option<config::Theme>, cursive::view::View)</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1540</x><y>550</y><w>210</w><h>130</h></coordinates><panel_attributes>ui::theme_view::ThemedView<T>
--
-theme: cursive::theme::Theme
-view: T
--
+new(cursive::theme::Theme, T): Self
inner_getters!()
-.
wrap_inpl!()
-wrap_draw(&self, &cursive::Printer)</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1170</x><y>750</y><w>350</w><h>90</h></coordinates><panel_attributes>ui::search
--
+on_search(&mut Cursive): Result<()>
+on_result_select(&mut Cursive, wiki::api::search::Search)
-continue_search(&mut Cursive, String, i32)</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1540</x><y>700</y><w>270</w><h>400</h></coordinates><panel_attributes>ui::article::view::ArticleView
--
content: ArticleContent
focus: Rc<Cell<usize>>
last_size: Vec2
width: Option<usize>
--
+new(): Self
+set_article(Article)
-calculate_lines(usize)
+on_link_submit<Fn(&mut Cursive, &str)>(): Self
-move_focus_up(usize): EventResult
-move_focus_down(usize): EventResult
+select_header(usize)
-.
-draw(&Printer)
-layout(Vec2)
-required_size(Vec2): Vec2
-needs_relayout(): bool
-take_focus(cursive::direction::Direction): bool
-important_area(Vec2): cursive::Rect
-on_event(Event): EventResult
-default()</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1860</x><y>550</y><w>250</w><h>410</h></coordinates><panel_attributes>ui::article::content::ArticleContent
--
-elements_rendered: Vec<RenderedElement>
-elements_cound: usize
-lines: Vec<Vec<Element>>
-lines_wrapped: bool
-link_handler: LinkHandler
-headers: Vec<String>
-headers_coords: Vec<usize>
-size_cache: Option<XY<SizeCache>>
-historical_caches: Vec<(Vec2, Vec2)>
--
-render(Article)
-render_element(impl Iterator<Item = (usize, &'a str)>, Style, &'a Option<String>): Vec<RenderedElement>
-calculate_lines(usize): Vec<Vec<Element>>
+set_article(Article)
+is_cache_valid(Vec2): bool
+get_lines: &Vec<Vec<Element>>
+is_wrapped(): bool
+link_handler(): &LinkHandler
+get_headers(): &Vec<String>
+get_headers_coords(): &Vec<usize></panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1800</x><y>720</y><w>80</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;60;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>2140</x><y>550</y><w>210</w><h>90</h></coordinates><panel_attributes>ui::article::content::Element
--
+text: String
+style: Style
+width: usize
+link_index: Option<usize></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>2140</x><y>650</y><w>210</w><h>90</h></coordinates><panel_attributes>ui::article::content::RenderedElement
--
+text: String
+style: Style
+newline: bool
+link_destination: Option<String></panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>2100</x><y>590</y><w>60</w><h>80</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;60;30;60;30;10;40;10</additional_attributes></element><element><id>Relation</id><coordinates><x>2100</x><y>640</y><w>60</w><h>80</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;30;10;30;60;40;60</additional_attributes></element><element><id>UMLClass</id><coordinates><x>2140</x><y>760</y><w>210</w><h>170</h></coordinates><panel_attributes>ui::article::links:LinkHandler
--
+links: Vec<Link>
+current_link: usize
+on_link_submit_callback: Option<rc::Rc<dyn Fn(&mut cursive::Cusive, &str) + 'static>>
--
+new(): Self
+move_vertical(y: i32): usize
+move_horizontal(x: i32): usize
+has_links(): bool
+reset()</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>2770</x><y>380</y><w>100</w><h>30</h></coordinates><panel_attributes>SimpleClass</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>2380</x><y>760</y><w>130</w><h>80</h></coordinates><panel_attributes>ui::article::links::Link
--
+position: Vec2
+width: usize
+destination: String</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>2100</x><y>770</y><w>60</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;40;10</additional_attributes></element><element><id>Relation</id><coordinates><x>2340</x><y>770</y><w>60</w><h>30</h></coordinates><panel_attributes>lt=<-</panel_attributes><additional_attributes>10;10;40;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1860</x><y>980</y><w>620</w><h>200</h></coordinates><panel_attributes>ui::article::lines::LinesWrapper
--
-width: usize
+lines_wrapped: bool
+headers: Vec<String>
+header_coords: Vec<usize>
+lines: Vec<Vec<Element>>
--
+new(usize, Vec<String>): Self
+wrap_lines(&[RenderedElement], &mut LinkHandler): Result<()>
-element_from_rendered_element(&RenderedElement, Option<usize>): Element
-split_element(&RenderedElement, Option<usize>, usize, usize): Vec<Vec<Element>>
-element_to_new_line(&mut Vec<Vec<Element>>, &mut Vec<Element>, &RenderedElement, Option<usize>): usize
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>980</x><y>860</y><w>180</w><h>70</h></coordinates><panel_attributes>cli::Cli
--
+search_query: Option<String>
+article_id: Option<i32>
+level: Option<i32></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1180</x><y>860</y><w>130</w><h>100</h></coordinates><panel_attributes>logging::Logger
--
-handle: log4rs::Handle
--
+new(): Self
+initialize()
-.
-default(): Self</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>980</x><y>950</y><w>180</w><h>60</h></coordinates><panel_attributes>error
--
+PANIC: &str
+create_hook()
</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>980</x><y>1030</y><w>180</w><h>120</h></coordinates><panel_attributes>wiki_tui
--
+LOGO: &str
-main()
-initialize()
-start_application()
-handle_arguments()
-get_color_palette(): Palette
</panel_attributes><additional_attributes></additional_attributes></element></diagram>