in graph/preprocessor.go [267:299]
func SeparateAliasFromRest(data []byte) ([]byte, []byte) {
reader := bytes.NewReader(data)
scanner := bufio.NewScanner(reader)
scanner.Split(bufio.ScanLines)
var aliasBuffer bytes.Buffer
var buffer bytes.Buffer
inside := false
aliasFieldName := regexp.MustCompile(`\Aalias\s*:.*\z`)
genericTopLevelRe := regexp.MustCompile(`\A[^\s:]+[^:]*:.*\z`)
commentRe := regexp.MustCompile(`\A\s*#.*`)
for scanner.Scan() {
text := scanner.Text()
if matched := commentRe.MatchString(text); matched {
continue
}
if matched := aliasFieldName.MatchString(text); matched && !inside {
inside = true
} else if matched := genericTopLevelRe.MatchString(text); matched && inside {
inside = false
}
if inside {
aliasBuffer.WriteString(text + "\n")
} else {
buffer.WriteString(text + "\n")
}
}
return aliasBuffer.Bytes(), buffer.Bytes()
}