Cos’è TextBuilder
TextBuilder è una classe che permette di comporre tramite metodi concatenati i facets (annotazioni rich text) definiti da AT Protocol di Bluesky.
Il corpo dei post Bluesky è testo semplice, ma per visualizzare menzioni, link e hashtag è necessario inviare, insieme al testo, un array facets che indichi posizione (offset in byte) e tipo. TextBuilder calcola automaticamente questi offset e costruisce l’array.
Creazione di testo base
TextBuilder::make()
ConTextBuilder::make() generi un’istanza specificando il testo iniziale. Il testo iniziale è opzionale.
text()
Context() aggiungi testo in coda.
newLine()
Aggiunge un a capo. Concount puoi indicare il numero di righe (default: 1).
toPost()
Converte l’istanza diTextBuilder in un record Post. Puoi passarlo direttamente a Bluesky::post().
Post::build()
Puoi anche passare una closure aPost::build(). Il valore di ritorno è un Post.
Aggiungere una menzione (@mention)
Con mention() aggiungi un facet di menzione.
Risoluzione automatica del DID
Se omettidid, viene risolto automaticamente dall’handle (viene chiamato Bluesky::resolveHandle()).
Specifica esplicita del DID
Se conosci già il DID, puoi passarlo esplicitamente per evitare la chiamata API.Inserire un link (URL)
Conlink() aggiungi un facet di link.
uri, viene usato text come URI.
Aggiungere un hashtag
Contag() aggiungi un facet di hashtag.
Composizione di testo complesso
Puoi combinare più facet per creare testi post ricchi.Scrittura con Post::build()
Integrazione con i post
Combinazione con Bluesky::post()
Combinazione con il canale Notification
Nel metodotoBluesky() di BlueskyChannel puoi usare Post::build().
Rilevamento automatico dei facets
Puoi anche far rilevare automaticamente@mention, URL e #hashtag nel testo e impostare i facets.
Aggiungere un facet personalizzato
Con il metodofacet() puoi aggiungere direttamente un array di facet arbitrario.
Limiti di lunghezza e attenzioni
Offset in byte e grapheme
Gli indici dei facet in AT Protocol si specificano in offset UTF-8 in byte.TextBuilder calcola internamente il numero di byte usando strlen().
Caratteri multibyte come giapponese ed emoji occupano più byte anche se rappresentano un solo carattere, quindi gli offset sono determinati dai byte, non dal numero di caratteri.
Limite di caratteri del post
I post di Bluesky hanno un limite di 300 caratteri in grapheme (caratteri visualizzati). Il limite è espresso in grapheme e non in byte, quindi puoi scrivere fino a 300 caratteri anche in giapponese.TextBuilder di per sé non verifica il numero di caratteri. Se invii un post che supera i 300 grapheme, l’API di AT Protocol restituisce un errore.Elenco dei metodi
Source: src/RichText/TextBuilder.php