From d9fd0d12c3ee197a5964fe3cb08099ec54bc859a Mon Sep 17 00:00:00 2001 From: yggverse Date: Thu, 26 Sep 2024 20:36:04 +0300 Subject: [PATCH] init markup builder --- .../tab/page/content/text/gemini/reader/mod.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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 1a9a5731..a97d67f8 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,3 +1,7 @@ +mod parser; + +use parser::header::Header; + use gtk::{ prelude::{StyleContextExt, WidgetExt}, Align, CssProvider, Label, STYLE_PROVIDER_PRIORITY_APPLICATION, @@ -11,6 +15,16 @@ pub struct Reader { impl Reader { // Construct pub fn new(gemtext: &str) -> Self { + // Init markup + let mut markup = String::new(); + + for line in gemtext.lines() { + if let Some(header) = Header::from(line) { + markup.push_str(header.markup()); + continue; + } + } + // Init CSS let css = CssProvider::new(); @@ -22,13 +36,14 @@ impl Reader { let widget = Label::builder() .halign(Align::Start) .valign(Align::Start) + .hexpand(true) // @TODO .vexpand(true) .margin_start(8) .margin_end(8) .wrap(true) .selectable(true) .use_markup(true) - .label(gemtext) // @TODO + .label(markup) .build(); widget