diff --git a/src/browser/main/tab/page/content/text/gemini/reader/mod.rs b/src/browser/main/tab/page/content/text/gemini/reader/mod.rs index a97d67f8..cc4e4353 100644 --- a/src/browser/main/tab/page/content/text/gemini/reader/mod.rs +++ b/src/browser/main/tab/page/content/text/gemini/reader/mod.rs @@ -1,6 +1,7 @@ mod parser; use parser::header::Header; +use parser::plain::Plain; use gtk::{ prelude::{StyleContextExt, WidgetExt}, @@ -19,10 +20,16 @@ impl Reader { let mut markup = String::new(); for line in gemtext.lines() { + // Is header if let Some(header) = Header::from(line) { markup.push_str(header.markup()); continue; } + + // Is link @TODO + + // Nothing match, escape string just + markup.push_str(Plain::from(line).markup()) } // Init CSS diff --git a/src/browser/main/tab/page/content/text/gemini/reader/parser/mod.rs b/src/browser/main/tab/page/content/text/gemini/reader/parser/mod.rs index f505d688..b3230e3a 100644 --- a/src/browser/main/tab/page/content/text/gemini/reader/parser/mod.rs +++ b/src/browser/main/tab/page/content/text/gemini/reader/parser/mod.rs @@ -1 +1,2 @@ pub mod header; +pub mod plain; diff --git a/src/browser/main/tab/page/content/text/gemini/reader/parser/plain.rs b/src/browser/main/tab/page/content/text/gemini/reader/parser/plain.rs new file mode 100644 index 00000000..db65636c --- /dev/null +++ b/src/browser/main/tab/page/content/text/gemini/reader/parser/plain.rs @@ -0,0 +1,23 @@ +use gtk::glib::{markup_escape_text, GString}; + +pub struct Plain { + markup: GString, + source: GString, +} + +impl Plain { + pub fn from(line: &str) -> Plain { + Self { + markup: GString::from(format!("{}\n", markup_escape_text(line))), + source: GString::from(line), + } + } + + pub fn markup(&self) -> &GString { + &self.markup + } + + pub fn source(&self) -> &GString { + &self.source + } +}