aboutsummaryrefslogtreecommitdiff
path: root/internal/reader/sanitizer/truncate.go
blob: bac2b4530267526b321c0fd7b336917637e31b58 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

package sanitizer

import "strings"

func TruncateHTML(input string, max int) string {
	text := StripTags(input)
	text = strings.ReplaceAll(text, "\n", " ")
	text = strings.ReplaceAll(text, "\t", " ")
	text = strings.ReplaceAll(text, "  ", " ")
	text = strings.TrimSpace(text)

	// Convert to runes to be safe with unicode
	runes := []rune(text)
	if len(runes) > max {
		return strings.TrimSpace(string(runes[:max])) + "…"
	}

	return text
}