package engines import ( "strings" ) // extractAttr finds attr="value" or attr='value' in an HTML string. func extractAttr(s, attr string) string { prefix := attr + `="` idx := strings.Index(s, prefix) if idx == -1 { prefix = attr + "='" idx = strings.Index(s, prefix) if idx == -1 { return "" } } start := idx + len(prefix) end := strings.Index(s[start:], "\"") if end == -1 { end = strings.Index(s[start:], "'") } if end == -1 { end = len(s[start:]) } return s[start : start+end] } // stripHTML removes all HTML tags from a string. func stripHTML(s string) string { var result strings.Builder inTag := false for _, r := range s { if r == '<' { inTag = true continue } if r == '>' { inTag = false continue } if !inTag { result.WriteRune(r) } } return strings.TrimSpace(result.String()) } // htmlUnescape handles basic HTML entities. func htmlUnescape(s string) string { s = strings.ReplaceAll(s, "&", "&") s = strings.ReplaceAll(s, "<", "<") s = strings.ReplaceAll(s, ">", ">") s = strings.ReplaceAll(s, """, "\"") s = strings.ReplaceAll(s, "'", "'") s = strings.ReplaceAll(s, " ", " ") return s }