diff --git a/src/main.rs b/src/main.rs
index 2dc857c..15db192 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -4,6 +4,18 @@ use std::net::{TcpListener, TcpStream};
use std::path::Path;
use regex::Regex;
+#[derive(PartialEq, Clone, Copy)]
+enum ListType {
+ Unordered,
+ Ordered,
+}
+
+struct TocItem {
+ level: usize,
+ text: String,
+ anchor: String,
+}
+
fn main() {
if !Path::new("public").exists() {
fs::create_dir("public").expect("Не удалось создать папку public");
@@ -34,11 +46,11 @@ fn handle_connection(mut stream: TcpStream) {
let buf_reader = BufReader::new(&stream);
let re = Regex::new(r"^GET\s+(\S+)\s+HTTP/\d\.\d$").unwrap();
let request_line = buf_reader.lines().next().unwrap().unwrap();
- let binding = re.captures(&request_line).and_then(|caps| caps.get(1)).map(|m| m.as_str().to_string()).unwrap_or(String::new());
+ let binding = re.captures(&request_line).and_then(|caps| caps.get(1)).map(|m| m.as_str().to_owned()).unwrap_or(String::new());
let request_line = binding.trim();
let request_line = if request_line == "/" { "index" } else { &request_line[1..] };
- let (status_line, html_content) = match read_markdown(&format!("public/{}.md", request_line)) {
+ let (status_line, html_content) = match read_markdown(request_line) {
Ok(html) => ("HTTP/1.1 200 OK", html),
Err(_) => ("HTTP/1.1 404 NOT FOUND", String::from("
404 - Страница не найдена
")),
};
@@ -54,16 +66,17 @@ fn handle_connection(mut stream: TcpStream) {
stream.flush().unwrap();
}
-fn read_markdown(filename: &str) -> Result {
- let markdown_content = fs::read_to_string(filename)?;
+fn read_markdown(request_line: &str) -> Result {
+ let filename = format!("public/{}.md", request_line);
+ let markdown_content = fs::read_to_string(&filename)?;
let (html, toc) = markdown_to_html(&markdown_content);
let css = fs::read_to_string("public/style.css")?;
let toc_html = if !toc.is_empty() {
- let mut toc_list = String::from("