Test bullet parser; fix marker-less passthrough
The previous parser treated any non-empty non-header line as a bullet, so 'plain paragraph' answers were silently rewrapped as <ul><li>. Now we only count a line if it had a recognized bullet marker (- * • ·); if none did, fall back to raw + <pre> as originally intended. Tests cover dash/asterisk/unicode bullets, blank-line tolerance, Summary:/TL;DR header stripping, HTML escaping, single-bullet output, the no-marker passthrough path, and the IsQuestionReaction set.
This commit is contained in:
@@ -139,29 +139,36 @@ func (e *Explainer) summarize(headline, body string) (string, error) {
|
||||
func formatSummary(raw string) (plain, htmlBody string) {
|
||||
lines := strings.Split(raw, "\n")
|
||||
var bullets []string
|
||||
sawMarker := false
|
||||
for _, line := range lines {
|
||||
line = strings.TrimSpace(line)
|
||||
if line == "" {
|
||||
continue
|
||||
}
|
||||
// Normalize common bullet markers
|
||||
for _, prefix := range []string{"- ", "* ", "• ", "·"} {
|
||||
if strings.HasPrefix(line, prefix) {
|
||||
line = strings.TrimSpace(line[len(prefix):])
|
||||
break
|
||||
}
|
||||
}
|
||||
// Skip header-ish lines the model sometimes adds
|
||||
low := strings.ToLower(line)
|
||||
if strings.HasPrefix(low, "summary:") || strings.HasPrefix(low, "tl;dr") {
|
||||
continue
|
||||
}
|
||||
// Normalize common bullet markers; only count this line if it had one.
|
||||
hadMarker := false
|
||||
for _, prefix := range []string{"- ", "* ", "• ", "·"} {
|
||||
if strings.HasPrefix(line, prefix) {
|
||||
line = strings.TrimSpace(line[len(prefix):])
|
||||
hadMarker = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !hadMarker {
|
||||
continue
|
||||
}
|
||||
sawMarker = true
|
||||
if line == "" {
|
||||
continue
|
||||
}
|
||||
bullets = append(bullets, line)
|
||||
}
|
||||
if len(bullets) == 0 {
|
||||
if !sawMarker || len(bullets) == 0 {
|
||||
// Model produced something but we couldn't parse bullets — pass through.
|
||||
return raw, "<pre>" + html.EscapeString(raw) + "</pre>"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user