mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-25 17:44:32 +02:00 
			
		
		
		
	FIx abuses and remove unused code --------- Signed-off-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: silverwind <me@silverwind.io>
		
			
				
	
	
		
			62 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2022 The Gitea Authors. All rights reserved.
 | |
| // SPDX-License-Identifier: MIT
 | |
| 
 | |
| package math
 | |
| 
 | |
| import (
 | |
| 	"html/template"
 | |
| 
 | |
| 	"code.gitea.io/gitea/modules/markup/internal"
 | |
| 	giteaUtil "code.gitea.io/gitea/modules/util"
 | |
| 
 | |
| 	gast "github.com/yuin/goldmark/ast"
 | |
| 	"github.com/yuin/goldmark/renderer"
 | |
| 	"github.com/yuin/goldmark/util"
 | |
| )
 | |
| 
 | |
| // Block render output:
 | |
| // 	<pre class="code-block is-loading"><code class="language-math display">...</code></pre>
 | |
| //
 | |
| // Keep in mind that there is another "code block" render in "func (r *GlodmarkRender) highlightingRenderer"
 | |
| // "highlightingRenderer" outputs the math block with extra "chroma" class:
 | |
| // 	<pre class="code-block is-loading"><code class="chroma language-math display">...</code></pre>
 | |
| //
 | |
| // Special classes:
 | |
| // * "is-loading": show a loading indicator
 | |
| // * "display": used by JS to decide to render as a block, otherwise render as inline
 | |
| 
 | |
| // BlockRenderer represents a renderer for math Blocks
 | |
| type BlockRenderer struct {
 | |
| 	renderInternal *internal.RenderInternal
 | |
| }
 | |
| 
 | |
| // NewBlockRenderer creates a new renderer for math Blocks
 | |
| func NewBlockRenderer(renderInternal *internal.RenderInternal) renderer.NodeRenderer {
 | |
| 	return &BlockRenderer{renderInternal: renderInternal}
 | |
| }
 | |
| 
 | |
| // RegisterFuncs registers the renderer for math Blocks
 | |
| func (r *BlockRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) {
 | |
| 	reg.Register(KindBlock, r.renderBlock)
 | |
| }
 | |
| 
 | |
| func (r *BlockRenderer) writeLines(w util.BufWriter, source []byte, n gast.Node) {
 | |
| 	l := n.Lines().Len()
 | |
| 	for i := range l {
 | |
| 		line := n.Lines().At(i)
 | |
| 		_, _ = w.Write(util.EscapeHTML(line.Value(source)))
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (r *BlockRenderer) renderBlock(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) {
 | |
| 	n := node.(*Block)
 | |
| 	if entering {
 | |
| 		codeHTML := giteaUtil.Iif[template.HTML](n.Inline, "", `<pre class="code-block is-loading">`) + `<code class="language-math display">`
 | |
| 		_, _ = w.WriteString(string(r.renderInternal.ProtectSafeAttrs(codeHTML)))
 | |
| 		r.writeLines(w, source, n)
 | |
| 	} else {
 | |
| 		_, _ = w.WriteString(`</code>` + giteaUtil.Iif(n.Inline, "", `</pre>`) + "\n")
 | |
| 	}
 | |
| 	return gast.WalkContinue, nil
 | |
| }
 |