func findProgramYAML()

in cmd/celfmt/main.go [220:251]


func findProgramYAML(s string) (prefix, program, suffix string, err error) {
	var yn yaml.Node
	idx := strings.Index(s, "\nprogram: |")
	if idx < 0 {
		if !strings.HasPrefix(s, "program: |") {
			return
		}
		// idx is -1 so the inc that follows
		// brings us to the start of the string.
	}
	idx++
	prefix = s[:idx]
	program = s[idx:]
	err = yaml.Unmarshal([]byte(program), &yn)
	if err != nil {
		return "", "", "", err
	}
	next := findNext(&yn, "program")
	if next == nil {
		return prefix, program, "", nil
	}
	suffix = s[idx:]
	for l := 1; l < next.Line; l++ {
		var ok bool
		_, suffix, ok = strings.Cut(suffix, "\n")
		if !ok {
			break
		}
	}
	program = strings.TrimSuffix(program, suffix)
	return prefix, program, suffix, nil
}