diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2024-07-17 19:00:41 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2024-07-17 19:00:41 +0200 |
| commit | 45fbf824248215a737d5d0b52920b43b68941ad3 (patch) | |
| tree | b4df9a6e0e92724b745f55dff2a459bcd98eae51 /src | |
| parent | d843a0b2c2590b96781a6c12af6c856b8056bf64 (diff) | |
Use sections instead of divs1.3.2
Diffstat (limited to 'src')
| -rw-r--r-- | src/configuration.rs | 37 | ||||
| -rw-r--r-- | src/gemini_parser.rs | 10 |
2 files changed, 42 insertions, 5 deletions
diff --git a/src/configuration.rs b/src/configuration.rs new file mode 100644 index 0000000..a09d780 --- /dev/null +++ b/src/configuration.rs @@ -0,0 +1,37 @@ +use std::env; +use std::path::PathBuf; + +pub struct Configuration { + // Default Base Directories, default to XDG dirs but can be + pub output_directory: PathBuf, +} + +impl Configuration { + + pub fn new() -> Self { + let output_directory = Configuration::directory( + "PAGE_OUTPUT_DIRECTORY", + "XDG_CACHE_HOME", + ".cache", + "page" + ); + + Configuration { + output_directory, + } + } + + fn directory(user_override: &str, default_value: &str, home_fallback: &str, path: &str) -> PathBuf { + match env::var(user_override) { + Ok(directory) => PathBuf::from(directory), + Err(_) => match env::var(default_value) { + Ok(directory) => PathBuf::from(directory), + Err(_) => match env::var("HOME") { + Ok(directory) => PathBuf::from(directory).join(home_fallback), + Err(_) => panic!("Could not find required directory, {} or {} should be set and readable.", user_override, default_value), + }, + }, + }.join(path) + } +} + diff --git a/src/gemini_parser.rs b/src/gemini_parser.rs index a7c752e..496dc0d 100644 --- a/src/gemini_parser.rs +++ b/src/gemini_parser.rs @@ -89,9 +89,9 @@ fn get_full_line_content(line_type: &LineType, line: &str) -> String { LineType::Link => { let url = get_link_address(line); if url.starts_with("gemini:") { - format!("<div><a href=\"{}\">{}</a></div>\n", url, get_link_content(line)) + format!("<p class=\"a\"><a href=\"{}\">{}</a></p>\n", url, get_link_content(line)) } else { - format!("<div><a href=\"{}\">{}</a></div>\n", url.replace(".gmi", ".html"), get_link_content(line)) + format!("<p class=\"a\"><a href=\"{}\">{}</a></p>\n", url.replace(".gmi", ".html"), get_link_content(line)) } }, LineType::Heading1 => format!("<h1>{}</h1>\n", encoded_line[1..].trim()), @@ -119,14 +119,14 @@ fn get_heading_wrapper(heading_stack: &mut Vec<u8>, line_type: &LineType) -> Str break; } - string.push_str("</div>"); + string.push_str("</section>"); if open_heading == current_heading { break; } } heading_stack.push(current_heading); - string.push_str(&format!("<div class=\"h{}\">", current_heading)); + string.push_str(&format!("<section class=\"h{}\">", current_heading)); } return string; @@ -135,7 +135,7 @@ fn get_heading_wrapper(heading_stack: &mut Vec<u8>, line_type: &LineType) -> Str fn close_heading_wrapper(heading_stack: &mut Vec<u8>) -> String { let mut string = String::new(); while let Some(_open_heading) = heading_stack.pop() { - string.push_str("</div>"); + string.push_str("</section>"); } return string; } |