Add a footer to each toot
This commit is contained in:
parent
4ff99a750c
commit
30a96b9e27
|
@ -79,7 +79,7 @@ the specified Mastodon account.`,
|
|||
text := update.Message.Text
|
||||
in_reply_to := ""
|
||||
|
||||
for _, message := range utils.SplitTextAtChunk(text, max_characters) {
|
||||
for _, message := range utils.SplitTextAtChunk(text, max_characters, "") {
|
||||
status, err := c.PostStatus(context.Background(), &mastodon.Toot{
|
||||
Status: message,
|
||||
Visibility: parseMastodonVisibility(os.Getenv(MASTODON_TOOT_VISIBILITY)),
|
||||
|
|
|
@ -2,16 +2,17 @@ package utils
|
|||
|
||||
import "strings"
|
||||
|
||||
// Split text in chunks of almost specified size.
|
||||
func SplitTextAtChunk(text string, size int) []string {
|
||||
// Split text in chunks of almost specified size and append the text in footer.
|
||||
func SplitTextAtChunk(text string, size int, footer string) []string {
|
||||
words := strings.SplitN(text, " ", -1)
|
||||
|
||||
size = size - len(footer)
|
||||
chunks := []string{}
|
||||
var message string
|
||||
for i, word := range words {
|
||||
|
||||
if len(message+" "+word) > size {
|
||||
chunks = append(chunks, message)
|
||||
chunks = append(chunks, message+footer)
|
||||
message = word
|
||||
continue
|
||||
}
|
||||
|
@ -21,7 +22,7 @@ func SplitTextAtChunk(text string, size int) []string {
|
|||
message += " " + word
|
||||
}
|
||||
}
|
||||
chunks = append(chunks, message)
|
||||
chunks = append(chunks, message+footer)
|
||||
|
||||
return chunks
|
||||
}
|
||||
|
|
|
@ -6,8 +6,7 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestSplitTestAtChuk(t *testing.T) {
|
||||
|
||||
func TestSplitTestAtChunkNoFooter(t *testing.T) {
|
||||
text := `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
|
||||
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
|
||||
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
||||
|
@ -17,7 +16,7 @@ sunt in culpa qui officia deserunt mollit anim id est laborum.`
|
|||
|
||||
assert.Equal(
|
||||
t,
|
||||
SplitTextAtChunk(text, 300),
|
||||
SplitTextAtChunk(text, 300, ""),
|
||||
[]string{
|
||||
`Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
|
||||
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
|
||||
|
@ -29,6 +28,32 @@ sunt in culpa qui officia deserunt mollit anim id est laborum.`})
|
|||
|
||||
assert.Equal(
|
||||
t,
|
||||
SplitTextAtChunk(text, 500),
|
||||
SplitTextAtChunk(text, 500, ""),
|
||||
[]string{text})
|
||||
}
|
||||
|
||||
func TestSplitTestAtChunk(t *testing.T) {
|
||||
text := `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
|
||||
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
|
||||
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
||||
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
|
||||
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
|
||||
sunt in culpa qui officia deserunt mollit anim id est laborum.`
|
||||
|
||||
assert.Equal(
|
||||
t,
|
||||
SplitTextAtChunk(text, 300, "FOOTER TEXT"),
|
||||
[]string{
|
||||
`Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
|
||||
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
|
||||
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
||||
consequat. Duis aute irure dolor in reprehenderit in voluptate velitFOOTER TEXT`,
|
||||
`esse cillum
|
||||
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,
|
||||
sunt in culpa qui officia deserunt mollit anim id est laborum.FOOTER TEXT`})
|
||||
|
||||
assert.Equal(
|
||||
t,
|
||||
SplitTextAtChunk(text, 500, "FOOTER TEXT"),
|
||||
[]string{text + "FOOTER TEXT"})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue