sojorn/go-backend/pkg/utils/safety_sanitizer.go
2026-02-15 00:33:24 -06:00

44 lines
1.7 KiB
Go

package utils
import (
"regexp"
"strings"
)
// SafetySanitizer replaces specific agency/enforcement terms with neutral
// alternatives for App Store compliance and community safety.
// Zero Specificity: never use specific agency names.
var replacements = []struct {
pattern *regexp.Regexp
replacement string
}{
{regexp.MustCompile(`(?i)\b(ICE)\b`), "Official Presence"},
{regexp.MustCompile(`(?i)\b(immigration\s*(and\s*)?customs?\s*enforcement)\b`), "Official Presence"},
{regexp.MustCompile(`(?i)\b(border\s*patrol)\b`), "Official Presence"},
{regexp.MustCompile(`(?i)\b(CBP|DEA|ATF|FBI)\b`), "Official Presence"},
{regexp.MustCompile(`(?i)\b(police)\s*(raid|raids|raiding)\b`), "Official Activity"},
{regexp.MustCompile(`(?i)\b(raid|raids|raiding)\b`), "Activity"},
{regexp.MustCompile(`(?i)\b(cops?)\b`), "Officers"},
{regexp.MustCompile(`(?i)\b(swat)\b`), "Task Force"},
{regexp.MustCompile(`(?i)\b(sting\s*operation)\b`), "Operation"},
{regexp.MustCompile(`(?i)\b(deportation|deporting|deported)\b`), "Enforcement Action"},
{regexp.MustCompile(`(?i)\b(detention\s*center)\b`), "Processing Facility"},
{regexp.MustCompile(`(?i)\b(warrant)\b`), "Authorization"},
}
// SanitizeBeaconText applies neutral-language replacements to user-submitted
// beacon text. Returns the sanitized string and whether any replacements were made.
func SanitizeBeaconText(input string) (string, bool) {
result := input
changed := false
for _, r := range replacements {
if r.pattern.MatchString(result) {
result = r.pattern.ReplaceAllString(result, r.replacement)
changed = true
}
}
// Collapse multiple spaces that may result from replacements
result = strings.Join(strings.Fields(result), " ")
return result, changed
}