Use md file's header to link name while summary file's title is blank
This commit is contained in:
parent
41a6f0d43e
commit
4288b52555
|
@ -4,6 +4,8 @@ use memchr::{self, Memchr};
|
||||||
use pulldown_cmark::{self, Event, HeadingLevel, Tag};
|
use pulldown_cmark::{self, Event, HeadingLevel, Tag};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::fmt::{self, Display, Formatter};
|
use std::fmt::{self, Display, Formatter};
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::Read;
|
||||||
use std::iter::FromIterator;
|
use std::iter::FromIterator;
|
||||||
use std::ops::{Deref, DerefMut};
|
use std::ops::{Deref, DerefMut};
|
||||||
use std::path::{Path, PathBuf};
|
use std::path::{Path, PathBuf};
|
||||||
|
@ -502,6 +504,29 @@ impl<'a> SummaryParser<'a> {
|
||||||
);
|
);
|
||||||
|
|
||||||
link.number = Some(number);
|
link.number = Some(number);
|
||||||
|
if link.name == "" {
|
||||||
|
let mut chapter_content = String::new();
|
||||||
|
let fname = format!("./src/{}", href.to_string());
|
||||||
|
File::open(&fname)
|
||||||
|
.with_context(|| {
|
||||||
|
format!("Couldn't open {:?} file while title is blank", fname)
|
||||||
|
})?
|
||||||
|
.read_to_string(&mut chapter_content)?;
|
||||||
|
let parser = pulldown_cmark::Parser::new(&chapter_content);
|
||||||
|
let mut found_h1 = false;
|
||||||
|
for event in parser {
|
||||||
|
match event {
|
||||||
|
Event::Start(Tag::Heading(HeadingLevel::H1, ..)) => found_h1 = true,
|
||||||
|
Event::Text(text) => {
|
||||||
|
if found_h1 {
|
||||||
|
link.name = text.into_string();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Ok(SummaryItem::Link(link));
|
return Ok(SummaryItem::Link(link));
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
- [Tables](individual/table.md)
|
- [Tables](individual/table.md)
|
||||||
- [Tasks](individual/task.md)
|
- [Tasks](individual/task.md)
|
||||||
- [Strikethrough](individual/strikethrough.md)
|
- [Strikethrough](individual/strikethrough.md)
|
||||||
- [Mixed](individual/mixed.md)
|
- [](individual/mixed.md)
|
||||||
- [Languages](languages/README.md)
|
- [Languages](languages/README.md)
|
||||||
- [Syntax Highlight](languages/highlight.md)
|
- [Syntax Highlight](languages/highlight.md)
|
||||||
- [Rust Specific](rust/README.md)
|
- [Rust Specific](rust/README.md)
|
||||||
|
|
Loading…
Reference in New Issue