mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-04-01 17:15:28 +00:00
define title based on first Header tag match
This commit is contained in:
parent
8400ed2b6a
commit
3df4a79e0a
3 changed files with 16 additions and 7 deletions
|
|
@ -39,9 +39,6 @@ impl Markdown {
|
||||||
base: &Uri,
|
base: &Uri,
|
||||||
markdown: &str,
|
markdown: &str,
|
||||||
) -> Result<Self, Error> {
|
) -> Result<Self, Error> {
|
||||||
// Init default values
|
|
||||||
let mut title = None;
|
|
||||||
|
|
||||||
// Init HashMap storage (for event controllers)
|
// Init HashMap storage (for event controllers)
|
||||||
let mut links: HashMap<TextTag, Uri> = HashMap::new();
|
let mut links: HashMap<TextTag, Uri> = HashMap::new();
|
||||||
|
|
||||||
|
|
@ -110,7 +107,7 @@ impl Markdown {
|
||||||
// Render markdown tags
|
// Render markdown tags
|
||||||
// * keep in order!
|
// * keep in order!
|
||||||
|
|
||||||
tags.render(&buffer, &base, &link_color.0, &mut links);
|
let title = tags.render(&buffer, &base, &link_color.0, &mut links);
|
||||||
|
|
||||||
// Parse single-line markdown tags
|
// Parse single-line markdown tags
|
||||||
/*'l: for line in markdown.lines() {
|
/*'l: for line in markdown.lines() {
|
||||||
|
|
|
||||||
|
|
@ -59,13 +59,15 @@ impl Tags {
|
||||||
base: &Uri,
|
base: &Uri,
|
||||||
link_color: &RGBA,
|
link_color: &RGBA,
|
||||||
links: &mut HashMap<TextTag, Uri>,
|
links: &mut HashMap<TextTag, Uri>,
|
||||||
) {
|
) -> Option<String> {
|
||||||
// * keep in order!
|
// * keep in order!
|
||||||
self.header.render(buffer);
|
let title = self.header.render(buffer); // @TODO strip raw tags
|
||||||
self.quote.render(buffer);
|
self.quote.render(buffer);
|
||||||
|
|
||||||
reference::render_images_links(&buffer, base, &link_color, links);
|
reference::render_images_links(&buffer, base, &link_color, links);
|
||||||
reference::render_images(&buffer, base, &link_color, links);
|
reference::render_images(&buffer, base, &link_color, links);
|
||||||
reference::render_links(&buffer, base, &link_color, links);
|
reference::render_links(&buffer, base, &link_color, links);
|
||||||
|
|
||||||
|
title
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,9 @@ impl Header {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Apply title `Tag` to given `TextBuffer`
|
/// Apply title `Tag` to given `TextBuffer`
|
||||||
pub fn render(&self, buffer: &TextBuffer) {
|
pub fn render(&self, buffer: &TextBuffer) -> Option<String> {
|
||||||
|
let mut raw_title = None;
|
||||||
|
|
||||||
let table = buffer.tag_table();
|
let table = buffer.tag_table();
|
||||||
|
|
||||||
assert!(table.add(&self.h1));
|
assert!(table.add(&self.h1));
|
||||||
|
|
@ -81,6 +83,12 @@ impl Header {
|
||||||
.captures_iter(&full_content)
|
.captures_iter(&full_content)
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
|
for cap in matches.iter() {
|
||||||
|
if raw_title.is_none() && !cap["title"].trim().is_empty() {
|
||||||
|
raw_title = Some(cap["title"].into())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for cap in matches.into_iter().rev() {
|
for cap in matches.into_iter().rev() {
|
||||||
let full_match = cap.get(0).unwrap();
|
let full_match = cap.get(0).unwrap();
|
||||||
|
|
||||||
|
|
@ -102,6 +110,8 @@ impl Header {
|
||||||
_ => buffer.insert_with_tags(&mut start_iter, &cap["title"], &[]),
|
_ => buffer.insert_with_tags(&mut start_iter, &cap["title"], &[]),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
raw_title
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue