package template import ( "fmt" "strings" ) // Embed inserts content between marker comments in a template. // The markers should be XML comments like and . func Embed(templateXML, content, markerStart, markerEnd string) (string, error) { startIdx := strings.Index(templateXML, markerStart) if startIdx == -1 { return "", fmt.Errorf("start marker %q not found in template", markerStart) } endIdx := strings.Index(templateXML, markerEnd) if endIdx == -1 { return "", fmt.Errorf("end marker %q not found in template", markerEnd) } if endIdx < startIdx { return "", fmt.Errorf("end marker appears before start marker") } var buf strings.Builder buf.WriteString(templateXML[:startIdx+len(markerStart)]) buf.WriteString("\n") buf.WriteString(content) buf.WriteString("\n") buf.WriteString(templateXML[endIdx:]) return buf.String(), nil }