mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +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,
|
||||
markdown: &str,
|
||||
) -> Result<Self, Error> {
|
||||
// Init default values
|
||||
let mut title = None;
|
||||
|
||||
// Init HashMap storage (for event controllers)
|
||||
let mut links: HashMap<TextTag, Uri> = HashMap::new();
|
||||
|
||||
|
|
@ -110,7 +107,7 @@ impl Markdown {
|
|||
// Render markdown tags
|
||||
// * 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
|
||||
/*'l: for line in markdown.lines() {
|
||||
|
|
|
|||
|
|
@ -59,13 +59,15 @@ impl Tags {
|
|||
base: &Uri,
|
||||
link_color: &RGBA,
|
||||
links: &mut HashMap<TextTag, Uri>,
|
||||
) {
|
||||
) -> Option<String> {
|
||||
// * keep in order!
|
||||
self.header.render(buffer);
|
||||
let title = self.header.render(buffer); // @TODO strip raw tags
|
||||
self.quote.render(buffer);
|
||||
|
||||
reference::render_images_links(&buffer, base, &link_color, links);
|
||||
reference::render_images(&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`
|
||||
pub fn render(&self, buffer: &TextBuffer) {
|
||||
pub fn render(&self, buffer: &TextBuffer) -> Option<String> {
|
||||
let mut raw_title = None;
|
||||
|
||||
let table = buffer.tag_table();
|
||||
|
||||
assert!(table.add(&self.h1));
|
||||
|
|
@ -81,6 +83,12 @@ impl Header {
|
|||
.captures_iter(&full_content)
|
||||
.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() {
|
||||
let full_match = cap.get(0).unwrap();
|
||||
|
||||
|
|
@ -102,6 +110,8 @@ impl Header {
|
|||
_ => buffer.insert_with_tags(&mut start_iter, &cap["title"], &[]),
|
||||
}
|
||||
}
|
||||
|
||||
raw_title
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue