in internal/parsers/markdown.go [206:228]
func ExtractScenarioVariablesFromAst(node ast.Node, source []byte) map[string]string {
scenarioVariables := make(map[string]string)
ast.Walk(node, func(node ast.Node, entering bool) (ast.WalkStatus, error) {
if entering && node.Kind() == ast.KindHTMLBlock {
htmlNode := node.(*ast.HTMLBlock)
blockContent := extractTextFromMarkdown(&htmlNode.BaseBlock, source)
logging.GlobalLogger.Debugf("Found HTML block with the content: %s\n", blockContent)
match := variableCommentBlockRegex.FindStringSubmatch(blockContent)
// Extract the variables from the comment block.
if len(match) > 1 {
variables := convertScenarioVariablesToMap(match[1])
for key, value := range variables {
scenarioVariables[key] = value
}
}
}
return ast.WalkContinue, nil
})
return scenarioVariables
}