]> git.r.bdr.sh - rbdr/page/commitdiff
Use sections instead of divs main
authorRuben Beltran del Rio <redacted>
Wed, 17 Jul 2024 17:00:41 +0000 (19:00 +0200)
committerRuben Beltran del Rio <redacted>
Wed, 17 Jul 2024 17:00:41 +0000 (19:00 +0200)
Cargo.lock
Cargo.toml
src/configuration.rs [new file with mode: 0644]
src/gemini_parser.rs

index f8ef2e28a535ebdabde76b5a5b6e7adfe9677427..bafb58cd33c1b5d8bcbdf2a613c9d5a1053381b9 100644 (file)
@@ -4,4 +4,4 @@ version = 3
 
 [[package]]
 name = "page"
-version = "1.3.1"
+version = "1.3.2"
index ebec913aebf3944d38b48279465e4756ac0080d7..5c0f2f36ae2524c2e89962708b3c702ff5f99e6c 100644 (file)
@@ -1,6 +1,6 @@
 [package]
 name = "page"
-version = "1.3.1"
+version = "1.3.2"
 edition = "2021"
 license = "AGPL-3.0-or-later"
 description = "Command line tool to generate a static website and gemini capsule from a directory with gemtext."
diff --git a/src/configuration.rs b/src/configuration.rs
new file mode 100644 (file)
index 0000000..a09d780
--- /dev/null
@@ -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)
+    }
+}
+
index a7c752e7bf1d6a7e3b1c8c32c269c5acbaebb5e9..496dc0d4126b2da3be23bff25ba2904a6892007e 100644 (file)
@@ -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;
 }