From d55d70ec45ee64fb536939f03422b6a0957179f0 Mon Sep 17 00:00:00 2001 From: deadvey Date: Tue, 21 Jan 2025 18:33:14 +0000 Subject: [PATCH] now required --- src/main.rs | 65 ++++++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6f15fa4..e315f88 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,11 +18,11 @@ fn clear_screen() { } fn parse_markdown(page_content: String) -> (String, Vec) { - let mut parsed_page_content: String = "".to_string(); - let mut hyperlink_number_counter: u64 = 0; - let mut links: Vec = Vec::new(); - let (screen_width, screen_height) = termion::terminal_size().unwrap(); // So the horizontal line (
) spans the whole console - + let mut parsed_page_content: String = "".to_string(); + let mut hyperlink_number_counter: u64 = 0; + let mut links: Vec = Vec::new(); + let (screen_width, _screen_height) = termion::terminal_size().unwrap(); // So the horizontal line (
) spans the whole console + for line in page_content.lines() { let mut parsed_line: String = line.to_string(); // Bold @@ -140,7 +140,7 @@ fn parse_markdown(page_content: String) -> (String, Vec) { } fn fetch_page(host: &String, port: u16, path: &String) -> String { - let full_url_formatted = format!("{}:{}/{}", host, port, path); + let full_url_formatted = format!("{}:{}{}", host, port, path); // Call curl using Com, mand let output = Command::new("curl") @@ -160,28 +160,33 @@ fn fetch_page(host: &String, port: u16, path: &String) -> String { } fn render_page(host: String, port: u16, path: String) -> Vec { - clear_screen(); - let mut content = fetch_page(&host, port, &path); - let mut links = Vec::new(); - let (screen_width, screen_height) = termion::terminal_size().unwrap(); + clear_screen(); + let mut content = fetch_page(&host, port, &path); + let mut links = Vec::new(); + let (screen_width, _screen_height) = termion::terminal_size().unwrap(); - (content, links) = parse_markdown(content); + if &content[..13] == "" { + (content, links) = parse_markdown((&content[13..]).to_string()); + } + else { + content += &format!("{}", &"Warning: This page is invalid markdown, it should contain at the very start of the file, showing raw text".yellow()); + } - for _i in 0..screen_width { - print!("—"); - } - print!("{}:{}/{}\n", host, port, path); - for _i in 0..screen_width { - print!("—"); - } - println!("\n\n{}", content); - for _i in 0..screen_width { - print!("—"); - } - println!(); + for _i in 0..screen_width { + print!("—"); + } + print!("{}:{}{}\n", host, port, path); + for _i in 0..screen_width { + print!("—"); + } + println!("\n\n{}", content); + for _i in 0..screen_width { + print!("—"); + } + println!(); - // Return links (you can add link parsing logic) - return links; + // Return links (you can add link parsing logic) + return links; } fn input() -> String{ @@ -230,7 +235,7 @@ fn parse_url(user_input: String, previous_host: &String) -> Result { else if let Some(caps) = path_change.captures(&user_input) { url.hostname = previous_host.to_string(); url.port = 3477; - url.path = caps[1].to_string(); + url.path = format!("/{}", caps[1].to_string()); url.protocol = "mttp".to_string(); Ok(url) } @@ -297,10 +302,10 @@ fn main() { if load_page { links = Vec::new(); links = render_page(history[historical_position].hostname.clone(), history[historical_position].port.clone(), history[historical_position].path.clone()); - println!("Enter reference number to follow, h for help, or q to quit\n{}",historical_position); - for i in 0..history.len() { - println!("{}://{}:{}/{}",history[i].protocol,history[i].hostname, history[i].port, history[i].path); - } + println!("Enter reference number to follow, h for help, or q to quit"); + //for i in 0..history.len() { + // println!("{}://{}:{}/{}",history[i].protocol,history[i].hostname, history[i].port, history[i].path); + //} } load_page = false;