diff --git a/src/app/browser/main/tab/page/content/text/gemini/reader.cpp b/src/app/browser/main/tab/page/content/text/gemini/reader.cpp index 756d8d00..05881f94 100644 --- a/src/app/browser/main/tab/page/content/text/gemini/reader.cpp +++ b/src/app/browser/main/tab/page/content/text/gemini/reader.cpp @@ -91,6 +91,28 @@ bool Reader::Line::Match::link( return !address.empty(); } +bool Reader::Line::Match::quote( + const Glib::ustring & GEMTEXT, + Glib::ustring & quote +) { + auto match = Glib::Regex::split_simple( + R"regex(^>(.*)$)regex", + GEMTEXT + ); + + int index = 0; for (const Glib::ustring & MATCH : match) + { + switch (index) + { + case 1: quote = MATCH; break; + } + + index++; + } + + return !quote.empty(); +} + // Markup tools Glib::ustring Reader::make( const Glib::ustring & GEMTEXT @@ -107,14 +129,14 @@ Glib::ustring Reader::make( { // Header int level; - Glib::ustring text; + Glib::ustring header; - if (Line::Match::header(line, level, text)) + if (Line::Match::header(line, level, header)) { pango.append( Make::header( level, - text + header ) ); @@ -139,6 +161,20 @@ Glib::ustring Reader::make( continue; } + // Header + Glib::ustring quote; + + if (Line::Match::quote(line, quote)) + { + pango.append( + Make::quote( + quote + ) + ); + + continue; + } + // @TODO other tags.. pango.append( @@ -153,7 +189,7 @@ Glib::ustring Reader::make( Glib::ustring Reader::Make::header( const int & LEVEL, - const Glib::ustring & VALUE + const Glib::ustring & TEXT ) { switch (LEVEL) { @@ -162,7 +198,7 @@ Glib::ustring Reader::Make::header( return Glib::ustring::sprintf( "%s\n", Glib::Markup::escape_text( - VALUE + TEXT ) ); @@ -171,7 +207,7 @@ Glib::ustring Reader::Make::header( return Glib::ustring::sprintf( "%s\n", Glib::Markup::escape_text( - VALUE + TEXT ) ); @@ -180,7 +216,7 @@ Glib::ustring Reader::Make::header( return Glib::ustring::sprintf( "%s\n", Glib::Markup::escape_text( - VALUE + TEXT ) ); @@ -223,4 +259,15 @@ Glib::ustring Reader::Make::link( description ) ); +} + +Glib::ustring Reader::Make::quote( + const Glib::ustring & TEXT +) { + return Glib::ustring::sprintf( + "%s\n", + Glib::Markup::escape_text( + TEXT + ) + ); } \ No newline at end of file diff --git a/src/app/browser/main/tab/page/content/text/gemini/reader.hpp b/src/app/browser/main/tab/page/content/text/gemini/reader.hpp index 9ef1f8aa..feaf543e 100644 --- a/src/app/browser/main/tab/page/content/text/gemini/reader.hpp +++ b/src/app/browser/main/tab/page/content/text/gemini/reader.hpp @@ -31,6 +31,11 @@ namespace app::browser::main::tab::page::content::text::gemini Glib::ustring & date, Glib::ustring & alt ); + + static bool quote( + const Glib::ustring & GEMTEXT, + Glib::ustring & text + ); }; }; @@ -38,7 +43,7 @@ namespace app::browser::main::tab::page::content::text::gemini { static Glib::ustring header( const int & LEVEL, - const Glib::ustring & VALUE + const Glib::ustring & TEXT ); static Glib::ustring link( @@ -46,6 +51,10 @@ namespace app::browser::main::tab::page::content::text::gemini const Glib::ustring & DATE, const Glib::ustring & ALT ); + + static Glib::ustring quote( + const Glib::ustring & TEXT + ); }; static Glib::ustring make(