fractal::session::view::content::room_history::message_row::text::inline_html

Struct InlineHtmlBuilder

Source
pub(super) struct InlineHtmlBuilder<'a> {
    single_line: bool,
    ellipsis: bool,
    mentions: MentionsMode<'a>,
    inner: String,
    truncated: bool,
}
Expand description

Helper type to construct a Pango-compatible string from inline HTML nodes.

Fields§

§single_line: bool

Whether this string should be on a single line.

§ellipsis: bool

Whether to append an ellipsis at the end of the string.

§mentions: MentionsMode<'a>

The mentions detection setting and results.

§inner: String

The inner string.

§truncated: bool

Whether this string was truncated because at the first newline.

Implementations§

Source§

impl<'a> InlineHtmlBuilder<'a>

Source

pub(super) fn new(single_line: bool, ellipsis: bool) -> Self

Constructs a new inline HTML string builder for the given room.

If single_line is set to true, the string will be ellipsized at the first line break.

If ellipsis is set to true, and ellipsis will be added at the end of the string.

Source

pub(super) fn detect_mentions( self, room: &'a Room, detect_at_room: bool, ) -> Self

Enable mentions detection in the given room.

If detect_at_room is true, it will also try to detect @room mentions.

Source

pub(super) fn append_emote_with_name(self, name: &mut Option<&str>) -> Self

Append and consume the given sender name for an emote, if it is set.

Source

pub(super) fn build(self) -> (String, Option<Vec<Pill>>)

Export the Pango-compatible string and the Pills that were constructed, if any.

Source

pub(super) fn build_with_nodes( self, nodes: impl IntoIterator<Item = NodeRef>, ) -> (String, Option<Vec<Pill>>)

Construct the string with the given inline nodes by converting them to Pango markup.

Returns the Pango-compatible string and the Pills that were constructed, if any.

Source

pub(super) fn build_with_nodes_text( self, nodes: impl IntoIterator<Item = NodeRef>, ) -> String

Construct the string by traversing the nodes an returning only the text it contains.

Node that markup contained in the text is not escaped and newlines are not removed.

Source

fn append_node(&mut self, node: &NodeRef, should_linkify: bool)

Append the given inline node by converting it to Pango markup.

Source

fn append_nodes( &mut self, nodes: impl IntoIterator<Item = NodeRef>, should_linkify: bool, )

Append the given inline nodes, converted to Pango markup.

Source

fn append_tags_and_children( &mut self, tag_name: &str, children: Children, should_linkify: bool, )

Append the given inline children, converted to Pango markup, surrounded by tags with the given name.

Append the opening Pango markup link tag of the given anchor URI.

The URI is also used as a title, so users can preview the link on hover.

Returns true if the opening tag was successfully constructed.

Source

fn append_span( &mut self, span: &SpanData, children: Children, should_linkify: bool, )

Append the span with the given data and inline children as Pango Markup.

Whether we are an inside an anchor or not decides if we try to linkify the text contained in the children nodes.

Source

fn append_nodes_text(&mut self, nodes: impl IntoIterator<Item = NodeRef>)

Append the text contained in the nodes to the string.

Returns true if the text was ellipsized.

Trait Implementations§

Source§

impl<'a> Debug for InlineHtmlBuilder<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for InlineHtmlBuilder<'a>

§

impl<'a> !RefUnwindSafe for InlineHtmlBuilder<'a>

§

impl<'a> !Send for InlineHtmlBuilder<'a>

§

impl<'a> !Sync for InlineHtmlBuilder<'a>

§

impl<'a> Unpin for InlineHtmlBuilder<'a>

§

impl<'a> !UnwindSafe for InlineHtmlBuilder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

impl<T> Identity for T
where T: ?Sized,

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> Any for T
where T: Any,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> MaybeSendSync for T