// Copyright 2024 The Forgejo Authors. All rights reserved.
// SPDX-License-Identifier: GPL-3.0-or-later

package util

import (
	"bytes"

	"github.com/yuin/goldmark/ast"
	"github.com/yuin/goldmark/parser"
)

func textOfChildren(n ast.Node, src []byte, b *bytes.Buffer) {
	for c := n.FirstChild(); c != nil; c = c.NextSibling() {
		if t, ok := c.(*ast.Text); ok {
			b.Write(t.Value(src))
		} else {
			textOfChildren(c, src, b)
		}
	}
}

func Text(n ast.Node, src []byte) []byte {
	var b bytes.Buffer
	textOfChildren(n, src, &b)
	return b.Bytes()
}

var (
	RenderContextKey = parser.NewContextKey()
	RenderConfigKey  = parser.NewContextKey()
)
