code.gitea.io/gitea@v1.22.3/modules/markup/markdown/transform_heading.go (about)

     1  // Copyright 2024 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package markdown
     5  
     6  import (
     7  	"fmt"
     8  
     9  	"code.gitea.io/gitea/modules/markup"
    10  
    11  	"github.com/yuin/goldmark/ast"
    12  	"github.com/yuin/goldmark/text"
    13  	"github.com/yuin/goldmark/util"
    14  )
    15  
    16  func (g *ASTTransformer) transformHeading(ctx *markup.RenderContext, v *ast.Heading, reader text.Reader, tocList *[]markup.Header) {
    17  	for _, attr := range v.Attributes() {
    18  		if _, ok := attr.Value.([]byte); !ok {
    19  			v.SetAttribute(attr.Name, []byte(fmt.Sprintf("%v", attr.Value)))
    20  		}
    21  	}
    22  	txt := v.Text(reader.Source())
    23  	header := markup.Header{
    24  		Text:  util.BytesToReadOnlyString(txt),
    25  		Level: v.Level,
    26  	}
    27  	if id, found := v.AttributeString("id"); found {
    28  		header.ID = util.BytesToReadOnlyString(id.([]byte))
    29  	}
    30  	*tocList = append(*tocList, header)
    31  	g.applyElementDir(v)
    32  }