mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
use local namespaces
This commit is contained in:
parent
d8f692d807
commit
496b0036ff
1 changed files with 47 additions and 49 deletions
|
|
@ -13,11 +13,6 @@ use tag::Tag;
|
|||
|
||||
use super::{ItemAction, WindowAction};
|
||||
use crate::app::browser::window::action::Position;
|
||||
use ggemtext::line::{
|
||||
code::{self, *},
|
||||
header::{Header, Level},
|
||||
link::Link,
|
||||
};
|
||||
use gtk::{
|
||||
EventControllerMotion, GestureClick, TextBuffer, TextTag, TextView, TextWindowType,
|
||||
UriLauncher, Window, WrapMode,
|
||||
|
|
@ -102,10 +97,11 @@ impl Gemini {
|
|||
// Disable multiline format on at least one closing tag not found
|
||||
// gemini://bbs.geminispace.org/s/Gemini/26031
|
||||
let is_multiline_enabled = {
|
||||
use ggemtext::line::code::{self};
|
||||
let mut t: usize = 0;
|
||||
for l in gemtext.lines() {
|
||||
if (l.starts_with(code::TAG) || l.ends_with(code::TAG))
|
||||
&& inline::Gemtext::as_value(l).is_none()
|
||||
&& code::inline::Gemtext::as_value(l).is_none()
|
||||
{
|
||||
t += 1;
|
||||
}
|
||||
|
|
@ -117,7 +113,7 @@ impl Gemini {
|
|||
for line in gemtext.lines() {
|
||||
// Is inline code
|
||||
{
|
||||
if let Some(code) = inline::Gemtext::as_value(line) {
|
||||
if let Some(code) = ggemtext::line::code::inline::Gemtext::as_value(line) {
|
||||
// Try auto-detect code syntax for given `value` @TODO optional
|
||||
match syntax.highlight(code, None) {
|
||||
Ok(highlight) => {
|
||||
|
|
@ -157,6 +153,7 @@ impl Gemini {
|
|||
|
||||
// Is multiline code
|
||||
if is_multiline_enabled {
|
||||
use ggemtext::line::code::Multiline;
|
||||
match multiline {
|
||||
None => {
|
||||
// Open tag found
|
||||
|
|
@ -240,6 +237,8 @@ impl Gemini {
|
|||
}
|
||||
|
||||
// Is header
|
||||
{
|
||||
use ggemtext::line::{Header, header::Level};
|
||||
if let Some(header) = Header::parse(line) {
|
||||
buffer.insert_with_tags(
|
||||
&mut buffer.end_iter(),
|
||||
|
|
@ -257,9 +256,12 @@ impl Gemini {
|
|||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Is link
|
||||
if let Some(link) = Link::from(line, Some(base), Some(&TimeZone::local())) {
|
||||
if let Some(link) =
|
||||
ggemtext::line::Link::from(line, Some(base), Some(&TimeZone::local()))
|
||||
{
|
||||
let mut alt = Vec::new();
|
||||
|
||||
if link.uri.scheme() != base.scheme() {
|
||||
|
|
@ -297,9 +299,8 @@ impl Gemini {
|
|||
}
|
||||
|
||||
// Is list
|
||||
{
|
||||
use ggemtext::line::list::Gemtext;
|
||||
if let Some(value) = line.as_value() {
|
||||
|
||||
if let Some(value) = ggemtext::line::list::Gemtext::as_value(line) {
|
||||
buffer.insert_with_tags(
|
||||
&mut buffer.end_iter(),
|
||||
&format!("• {value}"),
|
||||
|
|
@ -308,12 +309,10 @@ impl Gemini {
|
|||
buffer.insert(&mut buffer.end_iter(), NEW_LINE);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Is quote
|
||||
{
|
||||
use ggemtext::line::quote::Gemtext;
|
||||
if let Some(quote) = line.as_value() {
|
||||
|
||||
if let Some(quote) = ggemtext::line::quote::Gemtext::as_value(line) {
|
||||
// Show quote indicator if last line is not quote (to prevent duplicates)
|
||||
if !is_line_after_quote {
|
||||
// Show only if the icons resolved for default `Display`
|
||||
|
|
@ -329,7 +328,6 @@ impl Gemini {
|
|||
} else {
|
||||
is_line_after_quote = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Nothing match custom tags above,
|
||||
// just append plain text covered in empty tag (to handle controller events properly)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue