From 76bbf8d6d2a73b2c836abff011d32449d8278b50 Mon Sep 17 00:00:00 2001 From: kud1ing Date: Sat, 10 Dec 2016 20:47:16 +0100 Subject: [PATCH] refactor --- src/main.rs | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/main.rs b/src/main.rs index 786d459..c840348 100644 --- a/src/main.rs +++ b/src/main.rs @@ -34,6 +34,29 @@ enum ReadmeFileParsingState { Finished, } +/// Tries to parse the README.md content string. +fn parse(markdown_string: &str) -> ReadmeFileContent { + + // Create a Markdown parser for the README.md content string. + let mut parser = Parser::new(markdown_string); + + let mut readme_file_content = ReadmeFileContent::new(); + + let mut readme_file_parsing_state = ReadmeFileParsingState::Header; + + 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, + } + } + + readme_file_content +} + fn parse_header(parser: &mut Parser, content: &mut ReadmeFileContent) -> ReadmeFileParsingState { @@ -98,19 +121,8 @@ fn main() { panic!("couldn't read {}: {}", display, why.description()); } - // Create a parser for the Markdown string. - let mut parser = Parser::new(&markdown_string); - - let mut readme_file_content = ReadmeFileContent::new(); - let mut readme_file_parsing_state = ReadmeFileParsingState::Header; + // Try to parse the Markdown content string. + let readme_file_content = parse(&markdown_string); - 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, - } - } + println!("{:?}", readme_file_content); }