mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-11-04 00:11:04 +00:00 
			
		
		
		
	go1.16 (#14783)
This commit is contained in:
		
					parent
					
						
							
								030646eea4
							
						
					
				
			
			
				commit
				
					
						47f6a4ec3f
					
				
			
		
					 947 changed files with 26119 additions and 7062 deletions
				
			
		
							
								
								
									
										90
									
								
								vendor/github.com/russross/blackfriday/v2/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										90
									
								
								vendor/github.com/russross/blackfriday/v2/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,4 +1,6 @@
 | 
			
		|||
Blackfriday [](https://travis-ci.org/russross/blackfriday)
 | 
			
		||||
Blackfriday
 | 
			
		||||
[![Build Status][BuildV2SVG]][BuildV2URL]
 | 
			
		||||
[![PkgGoDev][PkgGoDevV2SVG]][PkgGoDevV2URL]
 | 
			
		||||
===========
 | 
			
		||||
 | 
			
		||||
Blackfriday is a [Markdown][1] processor implemented in [Go][2]. It
 | 
			
		||||
| 
						 | 
				
			
			@ -16,19 +18,21 @@ It started as a translation from C of [Sundown][3].
 | 
			
		|||
Installation
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
Blackfriday is compatible with any modern Go release. With Go 1.7 and git
 | 
			
		||||
installed:
 | 
			
		||||
Blackfriday is compatible with modern Go releases in module mode.
 | 
			
		||||
With Go installed:
 | 
			
		||||
 | 
			
		||||
    go get gopkg.in/russross/blackfriday.v2
 | 
			
		||||
    go get github.com/russross/blackfriday/v2
 | 
			
		||||
 | 
			
		||||
will download, compile, and install the package into your `$GOPATH`
 | 
			
		||||
directory hierarchy. Alternatively, you can achieve the same if you
 | 
			
		||||
import it into a project:
 | 
			
		||||
will resolve and add the package to the current development module,
 | 
			
		||||
then build and install it. Alternatively, you can achieve the same
 | 
			
		||||
if you import it in a package:
 | 
			
		||||
 | 
			
		||||
    import "gopkg.in/russross/blackfriday.v2"
 | 
			
		||||
    import "github.com/russross/blackfriday/v2"
 | 
			
		||||
 | 
			
		||||
and `go get` without parameters.
 | 
			
		||||
 | 
			
		||||
Legacy GOPATH mode is unsupported.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Versions
 | 
			
		||||
--------
 | 
			
		||||
| 
						 | 
				
			
			@ -36,13 +40,9 @@ Versions
 | 
			
		|||
Currently maintained and recommended version of Blackfriday is `v2`. It's being
 | 
			
		||||
developed on its own branch: https://github.com/russross/blackfriday/tree/v2 and the
 | 
			
		||||
documentation is available at
 | 
			
		||||
https://godoc.org/gopkg.in/russross/blackfriday.v2.
 | 
			
		||||
https://pkg.go.dev/github.com/russross/blackfriday/v2.
 | 
			
		||||
 | 
			
		||||
It is `go get`-able via via [gopkg.in][6] at `gopkg.in/russross/blackfriday.v2`,
 | 
			
		||||
but we highly recommend using package management tool like [dep][7] or
 | 
			
		||||
[Glide][8] and make use of semantic versioning. With package management you
 | 
			
		||||
should import `github.com/russross/blackfriday` and specify that you're using
 | 
			
		||||
version 2.0.0.
 | 
			
		||||
It is `go get`-able in module mode at `github.com/russross/blackfriday/v2`.
 | 
			
		||||
 | 
			
		||||
Version 2 offers a number of improvements over v1:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -62,6 +62,11 @@ Potential drawbacks:
 | 
			
		|||
  v2. See issue [#348](https://github.com/russross/blackfriday/issues/348) for
 | 
			
		||||
  tracking.
 | 
			
		||||
 | 
			
		||||
If you are still interested in the legacy `v1`, you can import it from
 | 
			
		||||
`github.com/russross/blackfriday`. Documentation for the legacy v1 can be found
 | 
			
		||||
here: https://pkg.go.dev/github.com/russross/blackfriday.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Usage
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +96,7 @@ Here's an example of simple usage of Blackfriday together with Bluemonday:
 | 
			
		|||
```go
 | 
			
		||||
import (
 | 
			
		||||
    "github.com/microcosm-cc/bluemonday"
 | 
			
		||||
    "github.com/russross/blackfriday"
 | 
			
		||||
    "github.com/russross/blackfriday/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ...
 | 
			
		||||
| 
						 | 
				
			
			@ -104,6 +109,8 @@ html := bluemonday.UGCPolicy().SanitizeBytes(unsafe)
 | 
			
		|||
If you want to customize the set of options, use `blackfriday.WithExtensions`,
 | 
			
		||||
`blackfriday.WithRenderer` and `blackfriday.WithRefOverride`.
 | 
			
		||||
 | 
			
		||||
### `blackfriday-tool`
 | 
			
		||||
 | 
			
		||||
You can also check out `blackfriday-tool` for a more complete example
 | 
			
		||||
of how to use it. Download and install it using:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -114,7 +121,7 @@ markdown file using a standalone program.  You can also browse the
 | 
			
		|||
source directly on github if you are just looking for some example
 | 
			
		||||
code:
 | 
			
		||||
 | 
			
		||||
* <http://github.com/russross/blackfriday-tool>
 | 
			
		||||
* <https://github.com/russross/blackfriday-tool>
 | 
			
		||||
 | 
			
		||||
Note that if you have not already done so, installing
 | 
			
		||||
`blackfriday-tool` will be sufficient to download and install
 | 
			
		||||
| 
						 | 
				
			
			@ -123,6 +130,22 @@ installed in `$GOPATH/bin`.  This is a statically-linked binary that
 | 
			
		|||
can be copied to wherever you need it without worrying about
 | 
			
		||||
dependencies and library versions.
 | 
			
		||||
 | 
			
		||||
### Sanitized anchor names
 | 
			
		||||
 | 
			
		||||
Blackfriday includes an algorithm for creating sanitized anchor names
 | 
			
		||||
corresponding to a given input text. This algorithm is used to create
 | 
			
		||||
anchors for headings when `AutoHeadingIDs` extension is enabled. The
 | 
			
		||||
algorithm has a specification, so that other packages can create
 | 
			
		||||
compatible anchor names and links to those anchors.
 | 
			
		||||
 | 
			
		||||
The specification is located at https://pkg.go.dev/github.com/russross/blackfriday/v2#hdr-Sanitized_Anchor_Names.
 | 
			
		||||
 | 
			
		||||
[`SanitizedAnchorName`](https://pkg.go.dev/github.com/russross/blackfriday/v2#SanitizedAnchorName) exposes this functionality, and can be used to
 | 
			
		||||
create compatible links to the anchor names generated by blackfriday.
 | 
			
		||||
This algorithm is also implemented in a small standalone package at
 | 
			
		||||
[`github.com/shurcooL/sanitized_anchor_name`](https://pkg.go.dev/github.com/shurcooL/sanitized_anchor_name). It can be useful for clients
 | 
			
		||||
that want a small package and don't need full functionality of blackfriday.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Features
 | 
			
		||||
--------
 | 
			
		||||
| 
						 | 
				
			
			@ -199,6 +222,15 @@ implements the following extensions:
 | 
			
		|||
    You can use 3 or more backticks to mark the beginning of the
 | 
			
		||||
    block, and the same number to mark the end of the block.
 | 
			
		||||
 | 
			
		||||
    To preserve classes of fenced code blocks while using the bluemonday
 | 
			
		||||
    HTML sanitizer, use the following policy:
 | 
			
		||||
 | 
			
		||||
    ```go
 | 
			
		||||
    p := bluemonday.UGCPolicy()
 | 
			
		||||
    p.AllowAttrs("class").Matching(regexp.MustCompile("^language-[a-zA-Z0-9]+$")).OnElements("code")
 | 
			
		||||
    html := p.SanitizeBytes(unsafe)
 | 
			
		||||
    ```
 | 
			
		||||
 | 
			
		||||
*   **Definition lists**. A simple definition list is made of a single-line
 | 
			
		||||
    term followed by a colon and the definition for that term.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -250,7 +282,7 @@ Other renderers
 | 
			
		|||
Blackfriday is structured to allow alternative rendering engines. Here
 | 
			
		||||
are a few of note:
 | 
			
		||||
 | 
			
		||||
*   [github_flavored_markdown](https://godoc.org/github.com/shurcooL/github_flavored_markdown):
 | 
			
		||||
*   [github_flavored_markdown](https://pkg.go.dev/github.com/shurcooL/github_flavored_markdown):
 | 
			
		||||
    provides a GitHub Flavored Markdown renderer with fenced code block
 | 
			
		||||
    highlighting, clickable heading anchor links.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -261,20 +293,28 @@ are a few of note:
 | 
			
		|||
*   [markdownfmt](https://github.com/shurcooL/markdownfmt): like gofmt,
 | 
			
		||||
    but for markdown.
 | 
			
		||||
 | 
			
		||||
*   [LaTeX output](https://github.com/Ambrevar/Blackfriday-LaTeX):
 | 
			
		||||
*   [LaTeX output](https://gitlab.com/ambrevar/blackfriday-latex):
 | 
			
		||||
    renders output as LaTeX.
 | 
			
		||||
 | 
			
		||||
*   [bfchroma](https://github.com/Depado/bfchroma/): provides convenience
 | 
			
		||||
    integration with the [Chroma](https://github.com/alecthomas/chroma) code
 | 
			
		||||
    highlighting library. bfchroma is only compatible with v2 of Blackfriday and
 | 
			
		||||
    provides a drop-in renderer ready to use with Blackfriday, as well as
 | 
			
		||||
    options and means for further customization.
 | 
			
		||||
 | 
			
		||||
*   [Blackfriday-Confluence](https://github.com/kentaro-m/blackfriday-confluence): provides a [Confluence Wiki Markup](https://confluence.atlassian.com/doc/confluence-wiki-markup-251003035.html) renderer.
 | 
			
		||||
 | 
			
		||||
*   [Blackfriday-Slack](https://github.com/karriereat/blackfriday-slack): converts markdown to slack message style
 | 
			
		||||
 | 
			
		||||
Todo
 | 
			
		||||
 | 
			
		||||
TODO
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
*   More unit testing
 | 
			
		||||
*   Improve unicode support. It does not understand all unicode
 | 
			
		||||
*   Improve Unicode support. It does not understand all Unicode
 | 
			
		||||
    rules (about what constitutes a letter, a punctuation symbol,
 | 
			
		||||
    etc.), so it may fail to detect word boundaries correctly in
 | 
			
		||||
    some instances. It is safe on all utf-8 input.
 | 
			
		||||
    some instances. It is safe on all UTF-8 input.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
License
 | 
			
		||||
| 
						 | 
				
			
			@ -286,6 +326,10 @@ License
 | 
			
		|||
   [1]: https://daringfireball.net/projects/markdown/ "Markdown"
 | 
			
		||||
   [2]: https://golang.org/ "Go Language"
 | 
			
		||||
   [3]: https://github.com/vmg/sundown "Sundown"
 | 
			
		||||
   [4]: https://godoc.org/gopkg.in/russross/blackfriday.v2#Parse "Parse func"
 | 
			
		||||
   [4]: https://pkg.go.dev/github.com/russross/blackfriday/v2#Parse "Parse func"
 | 
			
		||||
   [5]: https://github.com/microcosm-cc/bluemonday "Bluemonday"
 | 
			
		||||
   [6]: https://labix.org/gopkg.in "gopkg.in"
 | 
			
		||||
 | 
			
		||||
   [BuildV2SVG]: https://travis-ci.org/russross/blackfriday.svg?branch=v2
 | 
			
		||||
   [BuildV2URL]: https://travis-ci.org/russross/blackfriday
 | 
			
		||||
   [PkgGoDevV2SVG]: https://pkg.go.dev/badge/github.com/russross/blackfriday/v2
 | 
			
		||||
   [PkgGoDevV2URL]: https://pkg.go.dev/github.com/russross/blackfriday/v2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										30
									
								
								vendor/github.com/russross/blackfriday/v2/block.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/github.com/russross/blackfriday/v2/block.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -18,8 +18,7 @@ import (
 | 
			
		|||
	"html"
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/shurcooL/sanitized_anchor_name"
 | 
			
		||||
	"unicode"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
| 
						 | 
				
			
			@ -259,7 +258,7 @@ func (p *Markdown) prefixHeading(data []byte) int {
 | 
			
		|||
	}
 | 
			
		||||
	if end > i {
 | 
			
		||||
		if id == "" && p.extensions&AutoHeadingIDs != 0 {
 | 
			
		||||
			id = sanitized_anchor_name.Create(string(data[i:end]))
 | 
			
		||||
			id = SanitizedAnchorName(string(data[i:end]))
 | 
			
		||||
		}
 | 
			
		||||
		block := p.addBlock(Heading, data[i:end])
 | 
			
		||||
		block.HeadingID = id
 | 
			
		||||
| 
						 | 
				
			
			@ -673,6 +672,7 @@ func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int {
 | 
			
		|||
	if beg == 0 || beg >= len(data) {
 | 
			
		||||
		return 0
 | 
			
		||||
	}
 | 
			
		||||
	fenceLength := beg - 1
 | 
			
		||||
 | 
			
		||||
	var work bytes.Buffer
 | 
			
		||||
	work.Write([]byte(info))
 | 
			
		||||
| 
						 | 
				
			
			@ -706,6 +706,7 @@ func (p *Markdown) fencedCodeBlock(data []byte, doRender bool) int {
 | 
			
		|||
	if doRender {
 | 
			
		||||
		block := p.addBlock(CodeBlock, work.Bytes()) // TODO: get rid of temp buffer
 | 
			
		||||
		block.IsFenced = true
 | 
			
		||||
		block.FenceLength = fenceLength
 | 
			
		||||
		finalizeCodeBlock(block)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1503,7 +1504,7 @@ func (p *Markdown) paragraph(data []byte) int {
 | 
			
		|||
 | 
			
		||||
				id := ""
 | 
			
		||||
				if p.extensions&AutoHeadingIDs != 0 {
 | 
			
		||||
					id = sanitized_anchor_name.Create(string(data[prev:eol]))
 | 
			
		||||
					id = SanitizedAnchorName(string(data[prev:eol]))
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				block := p.addBlock(Heading, data[prev:eol])
 | 
			
		||||
| 
						 | 
				
			
			@ -1588,3 +1589,24 @@ func skipUntilChar(text []byte, start int, char byte) int {
 | 
			
		|||
	}
 | 
			
		||||
	return i
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// SanitizedAnchorName returns a sanitized anchor name for the given text.
 | 
			
		||||
//
 | 
			
		||||
// It implements the algorithm specified in the package comment.
 | 
			
		||||
func SanitizedAnchorName(text string) string {
 | 
			
		||||
	var anchorName []rune
 | 
			
		||||
	futureDash := false
 | 
			
		||||
	for _, r := range text {
 | 
			
		||||
		switch {
 | 
			
		||||
		case unicode.IsLetter(r) || unicode.IsNumber(r):
 | 
			
		||||
			if futureDash && len(anchorName) > 0 {
 | 
			
		||||
				anchorName = append(anchorName, '-')
 | 
			
		||||
			}
 | 
			
		||||
			futureDash = false
 | 
			
		||||
			anchorName = append(anchorName, unicode.ToLower(r))
 | 
			
		||||
		default:
 | 
			
		||||
			futureDash = true
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return string(anchorName)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										28
									
								
								vendor/github.com/russross/blackfriday/v2/doc.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/github.com/russross/blackfriday/v2/doc.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -15,4 +15,32 @@
 | 
			
		|||
//
 | 
			
		||||
// If you're interested in calling Blackfriday from command line, see
 | 
			
		||||
// https://github.com/russross/blackfriday-tool.
 | 
			
		||||
//
 | 
			
		||||
// Sanitized Anchor Names
 | 
			
		||||
//
 | 
			
		||||
// Blackfriday includes an algorithm for creating sanitized anchor names
 | 
			
		||||
// corresponding to a given input text. This algorithm is used to create
 | 
			
		||||
// anchors for headings when AutoHeadingIDs extension is enabled. The
 | 
			
		||||
// algorithm is specified below, so that other packages can create
 | 
			
		||||
// compatible anchor names and links to those anchors.
 | 
			
		||||
//
 | 
			
		||||
// The algorithm iterates over the input text, interpreted as UTF-8,
 | 
			
		||||
// one Unicode code point (rune) at a time. All runes that are letters (category L)
 | 
			
		||||
// or numbers (category N) are considered valid characters. They are mapped to
 | 
			
		||||
// lower case, and included in the output. All other runes are considered
 | 
			
		||||
// invalid characters. Invalid characters that precede the first valid character,
 | 
			
		||||
// as well as invalid character that follow the last valid character
 | 
			
		||||
// are dropped completely. All other sequences of invalid characters
 | 
			
		||||
// between two valid characters are replaced with a single dash character '-'.
 | 
			
		||||
//
 | 
			
		||||
// SanitizedAnchorName exposes this functionality, and can be used to
 | 
			
		||||
// create compatible links to the anchor names generated by blackfriday.
 | 
			
		||||
// This algorithm is also implemented in a small standalone package at
 | 
			
		||||
// github.com/shurcooL/sanitized_anchor_name. It can be useful for clients
 | 
			
		||||
// that want a small package and don't need full functionality of blackfriday.
 | 
			
		||||
package blackfriday
 | 
			
		||||
 | 
			
		||||
// NOTE: Keep Sanitized Anchor Name algorithm in sync with package
 | 
			
		||||
//       github.com/shurcooL/sanitized_anchor_name.
 | 
			
		||||
//       Otherwise, users of sanitized_anchor_name will get anchor names
 | 
			
		||||
//       that are incompatible with those generated by blackfriday.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2236
									
								
								vendor/github.com/russross/blackfriday/v2/entities.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2236
									
								
								vendor/github.com/russross/blackfriday/v2/entities.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										42
									
								
								vendor/github.com/russross/blackfriday/v2/esc.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								vendor/github.com/russross/blackfriday/v2/esc.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -13,13 +13,27 @@ var htmlEscaper = [256][]byte{
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func escapeHTML(w io.Writer, s []byte) {
 | 
			
		||||
	escapeEntities(w, s, false)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func escapeAllHTML(w io.Writer, s []byte) {
 | 
			
		||||
	escapeEntities(w, s, true)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func escapeEntities(w io.Writer, s []byte, escapeValidEntities bool) {
 | 
			
		||||
	var start, end int
 | 
			
		||||
	for end < len(s) {
 | 
			
		||||
		escSeq := htmlEscaper[s[end]]
 | 
			
		||||
		if escSeq != nil {
 | 
			
		||||
			w.Write(s[start:end])
 | 
			
		||||
			w.Write(escSeq)
 | 
			
		||||
			start = end + 1
 | 
			
		||||
			isEntity, entityEnd := nodeIsEntity(s, end)
 | 
			
		||||
			if isEntity && !escapeValidEntities {
 | 
			
		||||
				w.Write(s[start : entityEnd+1])
 | 
			
		||||
				start = entityEnd + 1
 | 
			
		||||
			} else {
 | 
			
		||||
				w.Write(s[start:end])
 | 
			
		||||
				w.Write(escSeq)
 | 
			
		||||
				start = end + 1
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		end++
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -28,6 +42,28 @@ func escapeHTML(w io.Writer, s []byte) {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func nodeIsEntity(s []byte, end int) (isEntity bool, endEntityPos int) {
 | 
			
		||||
	isEntity = false
 | 
			
		||||
	endEntityPos = end + 1
 | 
			
		||||
 | 
			
		||||
	if s[end] == '&' {
 | 
			
		||||
		for endEntityPos < len(s) {
 | 
			
		||||
			if s[endEntityPos] == ';' {
 | 
			
		||||
				if entities[string(s[end:endEntityPos+1])] {
 | 
			
		||||
					isEntity = true
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if !isalnum(s[endEntityPos]) && s[endEntityPos] != '&' && s[endEntityPos] != '#' {
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
			endEntityPos++
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return isEntity, endEntityPos
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func escLink(w io.Writer, text []byte) {
 | 
			
		||||
	unesc := html.UnescapeString(string(text))
 | 
			
		||||
	escapeHTML(w, []byte(unesc))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										9
									
								
								vendor/github.com/russross/blackfriday/v2/html.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/russross/blackfriday/v2/html.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -132,7 +132,10 @@ func NewHTMLRenderer(params HTMLRendererParameters) *HTMLRenderer {
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	if params.FootnoteReturnLinkContents == "" {
 | 
			
		||||
		params.FootnoteReturnLinkContents = `<sup>[return]</sup>`
 | 
			
		||||
		// U+FE0E is VARIATION SELECTOR-15.
 | 
			
		||||
		// It suppresses automatic emoji presentation of the preceding
 | 
			
		||||
		// U+21A9 LEFTWARDS ARROW WITH HOOK on iOS and iPadOS.
 | 
			
		||||
		params.FootnoteReturnLinkContents = "<span aria-label='Return'>↩\ufe0e</span>"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return &HTMLRenderer{
 | 
			
		||||
| 
						 | 
				
			
			@ -616,7 +619,7 @@ func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkSt
 | 
			
		|||
		}
 | 
			
		||||
	case Code:
 | 
			
		||||
		r.out(w, codeTag)
 | 
			
		||||
		escapeHTML(w, node.Literal)
 | 
			
		||||
		escapeAllHTML(w, node.Literal)
 | 
			
		||||
		r.out(w, codeCloseTag)
 | 
			
		||||
	case Document:
 | 
			
		||||
		break
 | 
			
		||||
| 
						 | 
				
			
			@ -762,7 +765,7 @@ func (r *HTMLRenderer) RenderNode(w io.Writer, node *Node, entering bool) WalkSt
 | 
			
		|||
		r.cr(w)
 | 
			
		||||
		r.out(w, preTag)
 | 
			
		||||
		r.tag(w, codeTag[:len(codeTag)-1], attrs)
 | 
			
		||||
		escapeHTML(w, node.Literal)
 | 
			
		||||
		escapeAllHTML(w, node.Literal)
 | 
			
		||||
		r.out(w, codeCloseTag)
 | 
			
		||||
		r.out(w, preCloseTag)
 | 
			
		||||
		if node.Parent.Type != Item {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								vendor/github.com/russross/blackfriday/v2/inline.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/russross/blackfriday/v2/inline.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -278,7 +278,7 @@ func link(p *Markdown, data []byte, offset int) (int, *Node) {
 | 
			
		|||
		case data[i] == '\n':
 | 
			
		||||
			textHasNl = true
 | 
			
		||||
 | 
			
		||||
		case data[i-1] == '\\':
 | 
			
		||||
		case isBackslashEscaped(data, i):
 | 
			
		||||
			continue
 | 
			
		||||
 | 
			
		||||
		case data[i] == '[':
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										12
									
								
								vendor/github.com/russross/blackfriday/v2/node.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/russross/blackfriday/v2/node.go
									
										
									
										generated
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -199,7 +199,8 @@ func (n *Node) InsertBefore(sibling *Node) {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (n *Node) isContainer() bool {
 | 
			
		||||
// IsContainer returns true if 'n' can contain children.
 | 
			
		||||
func (n *Node) IsContainer() bool {
 | 
			
		||||
	switch n.Type {
 | 
			
		||||
	case Document:
 | 
			
		||||
		fallthrough
 | 
			
		||||
| 
						 | 
				
			
			@ -238,6 +239,11 @@ func (n *Node) isContainer() bool {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsLeaf returns true if 'n' is a leaf node.
 | 
			
		||||
func (n *Node) IsLeaf() bool {
 | 
			
		||||
	return !n.IsContainer()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (n *Node) canContain(t NodeType) bool {
 | 
			
		||||
	if n.Type == List {
 | 
			
		||||
		return t == Item
 | 
			
		||||
| 
						 | 
				
			
			@ -309,11 +315,11 @@ func newNodeWalker(root *Node) *nodeWalker {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func (nw *nodeWalker) next() {
 | 
			
		||||
	if (!nw.current.isContainer() || !nw.entering) && nw.current == nw.root {
 | 
			
		||||
	if (!nw.current.IsContainer() || !nw.entering) && nw.current == nw.root {
 | 
			
		||||
		nw.current = nil
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	if nw.entering && nw.current.isContainer() {
 | 
			
		||||
	if nw.entering && nw.current.IsContainer() {
 | 
			
		||||
		if nw.current.FirstChild != nil {
 | 
			
		||||
			nw.current = nw.current.FirstChild
 | 
			
		||||
			nw.entering = true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue