|
|
|
@ -9,15 +9,15 @@ use std::path::Path;
|
|
|
|
|
|
|
|
|
|
/// The content of the README.md file.
|
|
|
|
|
#[derive(Debug)]
|
|
|
|
|
struct ReadmeContent<'a> {
|
|
|
|
|
struct ReadmeFileContent<'a> {
|
|
|
|
|
|
|
|
|
|
/// The header Markdown events.
|
|
|
|
|
header: Vec<Event<'a>>,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl<'a> ReadmeContent<'a> {
|
|
|
|
|
fn new() -> ReadmeContent<'a> {
|
|
|
|
|
ReadmeContent {
|
|
|
|
|
impl<'a> ReadmeFileContent<'a> {
|
|
|
|
|
fn new() -> ReadmeFileContent<'a> {
|
|
|
|
|
ReadmeFileContent {
|
|
|
|
|
header: Vec::new()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -26,7 +26,7 @@ impl<'a> ReadmeContent<'a> {
|
|
|
|
|
|
|
|
|
|
/// The state of the README.md file high-level parser.
|
|
|
|
|
#[derive(Debug, PartialEq)]
|
|
|
|
|
enum ReadmeParsingState {
|
|
|
|
|
enum ReadmeFileParsingState {
|
|
|
|
|
Header,
|
|
|
|
|
TableOfContent,
|
|
|
|
|
Content,
|
|
|
|
@ -35,7 +35,7 @@ enum ReadmeParsingState {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fn parse_header(parser: &mut Parser, content: &mut ReadmeContent) -> ReadmeParsingState {
|
|
|
|
|
fn parse_header(parser: &mut Parser, content: &mut ReadmeFileContent) -> ReadmeFileParsingState {
|
|
|
|
|
|
|
|
|
|
// TODO
|
|
|
|
|
println!("TODO: `parse_header()`");
|
|
|
|
@ -52,31 +52,31 @@ fn parse_header(parser: &mut Parser, content: &mut ReadmeContent) -> ReadmeParsi
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
ReadmeParsingState::TableOfContent
|
|
|
|
|
ReadmeFileParsingState::TableOfContent
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn parse_toc(parser: &mut Parser, content: &mut ReadmeContent) -> ReadmeParsingState {
|
|
|
|
|
fn parse_toc(parser: &mut Parser, content: &mut ReadmeFileContent) -> ReadmeFileParsingState {
|
|
|
|
|
|
|
|
|
|
// TODO
|
|
|
|
|
println!("TODO: `parse_toc()`");
|
|
|
|
|
|
|
|
|
|
ReadmeParsingState::Content
|
|
|
|
|
ReadmeFileParsingState::Content
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn parse_content(parser: &mut Parser, content: &mut ReadmeContent) -> ReadmeParsingState {
|
|
|
|
|
fn parse_content(parser: &mut Parser, content: &mut ReadmeFileContent) -> ReadmeFileParsingState {
|
|
|
|
|
|
|
|
|
|
// TODO
|
|
|
|
|
println!("TODO: `parse_content()`");
|
|
|
|
|
|
|
|
|
|
ReadmeParsingState::Footer
|
|
|
|
|
ReadmeFileParsingState::Footer
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn parse_footer(parser: &mut Parser, content: &mut ReadmeContent) -> ReadmeParsingState {
|
|
|
|
|
fn parse_footer(parser: &mut Parser, content: &mut ReadmeFileContent) -> ReadmeFileParsingState {
|
|
|
|
|
|
|
|
|
|
// TODO
|
|
|
|
|
println!("TODO: `parse_footer()`");
|
|
|
|
|
|
|
|
|
|
ReadmeParsingState::Finished
|
|
|
|
|
ReadmeFileParsingState::Finished
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -98,19 +98,19 @@ fn main() {
|
|
|
|
|
panic!("couldn't read {}: {}", display, why.description());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Parser for the Markdownstring.
|
|
|
|
|
// Create a parser for the Markdown string.
|
|
|
|
|
let mut parser = Parser::new(&markdown_string);
|
|
|
|
|
|
|
|
|
|
let mut content = ReadmeContent::new();
|
|
|
|
|
let mut state = ReadmeParsingState::Header;
|
|
|
|
|
let mut readme_file_content = ReadmeFileContent::new();
|
|
|
|
|
let mut readme_file_parsing_state = ReadmeFileParsingState::Header;
|
|
|
|
|
|
|
|
|
|
while state != ReadmeParsingState::Finished {
|
|
|
|
|
match state {
|
|
|
|
|
ReadmeParsingState::Header => state = parse_header(&mut parser, &mut content),
|
|
|
|
|
ReadmeParsingState::TableOfContent => state = parse_toc(&mut parser, &mut content),
|
|
|
|
|
ReadmeParsingState::Content => state = parse_content(&mut parser, &mut content),
|
|
|
|
|
ReadmeParsingState::Footer => state = parse_footer(&mut parser, &mut content),
|
|
|
|
|
ReadmeParsingState::Finished => state = ReadmeParsingState::Finished,
|
|
|
|
|
while readme_file_parsing_state != ReadmeFileParsingState::Finished {
|
|
|
|
|
readme_file_parsing_state = match readme_file_parsing_state {
|
|
|
|
|
ReadmeFileParsingState::Header => parse_header(&mut parser, &mut readme_file_content),
|
|
|
|
|
ReadmeFileParsingState::TableOfContent => parse_toc(&mut parser, &mut readme_file_content),
|
|
|
|
|
ReadmeFileParsingState::Content => parse_content(&mut parser, &mut readme_file_content),
|
|
|
|
|
ReadmeFileParsingState::Footer => parse_footer(&mut parser, &mut readme_file_content),
|
|
|
|
|
ReadmeFileParsingState::Finished => ReadmeFileParsingState::Finished,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|