package template
import (
"fmt"
"strings"
)
// Embed inserts content between marker comments in a template.
// The markers should be XML comments like <!-- MD_CONTENT_START --> and <!-- MD_CONTENT_END -->.
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
}