go.mod: github.com/cpuguy83/go-md2man/v2 v2.0.2
it's an indirect dependency, but updating allows us to drop another dependency. full diff: https://github.com/cpuguy83/go-md2man/compare/v2.0.0...v2.0.2 Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
		
							
								
								
									
										5
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								go.mod
									
									
									
									
									
								
							| @@ -89,7 +89,7 @@ require ( | ||||
| 	github.com/cilium/ebpf v0.9.1 // indirect | ||||
| 	github.com/containerd/cgroups v1.0.5-0.20220816231112-7083cd60b721 // indirect | ||||
| 	github.com/containers/ocicrypt v1.1.3 // indirect | ||||
| 	github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect | ||||
| 	github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect | ||||
| 	github.com/cyphar/filepath-securejoin v0.2.3 // indirect | ||||
| 	github.com/go-logr/logr v1.2.3 // indirect | ||||
| 	github.com/go-logr/stdr v1.2.2 // indirect | ||||
| @@ -112,8 +112,7 @@ require ( | ||||
| 	github.com/prometheus/client_model v0.2.0 // indirect | ||||
| 	github.com/prometheus/common v0.32.1 // indirect | ||||
| 	github.com/prometheus/procfs v0.7.3 // indirect | ||||
| 	github.com/russross/blackfriday/v2 v2.0.1 // indirect | ||||
| 	github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect | ||||
| 	github.com/russross/blackfriday/v2 v2.1.0 // indirect | ||||
| 	github.com/spf13/pflag v1.0.5 // indirect | ||||
| 	github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980 // indirect | ||||
| 	github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect | ||||
|   | ||||
							
								
								
									
										7
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								go.sum
									
									
									
									
									
								
							| @@ -322,8 +322,9 @@ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV | ||||
| github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= | ||||
| github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= | ||||
| github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= | ||||
| github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||||
| github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||||
| @@ -835,8 +836,9 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So | ||||
| github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= | ||||
| github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= | ||||
| github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= | ||||
| github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= | ||||
| github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||||
| github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= | ||||
| github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||||
| github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= | ||||
| github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= | ||||
| github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= | ||||
| @@ -847,7 +849,6 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg | ||||
| github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= | ||||
| github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= | ||||
| github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= | ||||
| github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= | ||||
| github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= | ||||
| github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= | ||||
| github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= | ||||
|   | ||||
| @@ -516,6 +516,7 @@ github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfc | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= | ||||
| github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= | ||||
| github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||||
| github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||||
| github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= | ||||
|   | ||||
							
								
								
									
										105
									
								
								vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										105
									
								
								vendor/github.com/cpuguy83/go-md2man/v2/md2man/roff.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -15,7 +15,7 @@ type roffRenderer struct { | ||||
| 	extensions   blackfriday.Extensions | ||||
| 	listCounters []int | ||||
| 	firstHeader  bool | ||||
| 	defineTerm   bool | ||||
| 	firstDD      bool | ||||
| 	listDepth    int | ||||
| } | ||||
|  | ||||
| @@ -42,7 +42,8 @@ const ( | ||||
| 	quoteCloseTag    = "\n.RE\n" | ||||
| 	listTag          = "\n.RS\n" | ||||
| 	listCloseTag     = "\n.RE\n" | ||||
| 	arglistTag       = "\n.TP\n" | ||||
| 	dtTag            = "\n.TP\n" | ||||
| 	dd2Tag           = "\n" | ||||
| 	tableStart       = "\n.TS\nallbox;\n" | ||||
| 	tableEnd         = ".TE\n" | ||||
| 	tableCellStart   = "T{\n" | ||||
| @@ -90,7 +91,7 @@ func (r *roffRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering | ||||
|  | ||||
| 	switch node.Type { | ||||
| 	case blackfriday.Text: | ||||
| 		r.handleText(w, node, entering) | ||||
| 		escapeSpecialChars(w, node.Literal) | ||||
| 	case blackfriday.Softbreak: | ||||
| 		out(w, crTag) | ||||
| 	case blackfriday.Hardbreak: | ||||
| @@ -150,40 +151,21 @@ func (r *roffRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering | ||||
| 		out(w, codeCloseTag) | ||||
| 	case blackfriday.Table: | ||||
| 		r.handleTable(w, node, entering) | ||||
| 	case blackfriday.TableCell: | ||||
| 		r.handleTableCell(w, node, entering) | ||||
| 	case blackfriday.TableHead: | ||||
| 	case blackfriday.TableBody: | ||||
| 	case blackfriday.TableRow: | ||||
| 		// no action as cell entries do all the nroff formatting | ||||
| 		return blackfriday.GoToNext | ||||
| 	case blackfriday.TableCell: | ||||
| 		r.handleTableCell(w, node, entering) | ||||
| 	case blackfriday.HTMLSpan: | ||||
| 		// ignore other HTML tags | ||||
| 	default: | ||||
| 		fmt.Fprintln(os.Stderr, "WARNING: go-md2man does not handle node type "+node.Type.String()) | ||||
| 	} | ||||
| 	return walkAction | ||||
| } | ||||
|  | ||||
| func (r *roffRenderer) handleText(w io.Writer, node *blackfriday.Node, entering bool) { | ||||
| 	var ( | ||||
| 		start, end string | ||||
| 	) | ||||
| 	// handle special roff table cell text encapsulation | ||||
| 	if node.Parent.Type == blackfriday.TableCell { | ||||
| 		if len(node.Literal) > 30 { | ||||
| 			start = tableCellStart | ||||
| 			end = tableCellEnd | ||||
| 		} else { | ||||
| 			// end rows that aren't terminated by "tableCellEnd" with a cr if end of row | ||||
| 			if node.Parent.Next == nil && !node.Parent.IsHeader { | ||||
| 				end = crTag | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	out(w, start) | ||||
| 	escapeSpecialChars(w, node.Literal) | ||||
| 	out(w, end) | ||||
| } | ||||
|  | ||||
| func (r *roffRenderer) handleHeading(w io.Writer, node *blackfriday.Node, entering bool) { | ||||
| 	if entering { | ||||
| 		switch node.Level { | ||||
| @@ -230,15 +212,20 @@ func (r *roffRenderer) handleItem(w io.Writer, node *blackfriday.Node, entering | ||||
| 		if node.ListFlags&blackfriday.ListTypeOrdered != 0 { | ||||
| 			out(w, fmt.Sprintf(".IP \"%3d.\" 5\n", r.listCounters[len(r.listCounters)-1])) | ||||
| 			r.listCounters[len(r.listCounters)-1]++ | ||||
| 		} else if node.ListFlags&blackfriday.ListTypeTerm != 0 { | ||||
| 			// DT (definition term): line just before DD (see below). | ||||
| 			out(w, dtTag) | ||||
| 			r.firstDD = true | ||||
| 		} else if node.ListFlags&blackfriday.ListTypeDefinition != 0 { | ||||
| 			// state machine for handling terms and following definitions | ||||
| 			// since blackfriday does not distinguish them properly, nor | ||||
| 			// does it seperate them into separate lists as it should | ||||
| 			if !r.defineTerm { | ||||
| 				out(w, arglistTag) | ||||
| 				r.defineTerm = true | ||||
| 			// DD (definition description): line that starts with ": ". | ||||
| 			// | ||||
| 			// We have to distinguish between the first DD and the | ||||
| 			// subsequent ones, as there should be no vertical | ||||
| 			// whitespace between the DT and the first DD. | ||||
| 			if r.firstDD { | ||||
| 				r.firstDD = false | ||||
| 			} else { | ||||
| 				r.defineTerm = false | ||||
| 				out(w, dd2Tag) | ||||
| 			} | ||||
| 		} else { | ||||
| 			out(w, ".IP \\(bu 2\n") | ||||
| @@ -251,7 +238,7 @@ func (r *roffRenderer) handleItem(w io.Writer, node *blackfriday.Node, entering | ||||
| func (r *roffRenderer) handleTable(w io.Writer, node *blackfriday.Node, entering bool) { | ||||
| 	if entering { | ||||
| 		out(w, tableStart) | ||||
| 		//call walker to count cells (and rows?) so format section can be produced | ||||
| 		// call walker to count cells (and rows?) so format section can be produced | ||||
| 		columns := countColumns(node) | ||||
| 		out(w, strings.Repeat("l ", columns)+"\n") | ||||
| 		out(w, strings.Repeat("l ", columns)+".\n") | ||||
| @@ -261,28 +248,41 @@ func (r *roffRenderer) handleTable(w io.Writer, node *blackfriday.Node, entering | ||||
| } | ||||
|  | ||||
| func (r *roffRenderer) handleTableCell(w io.Writer, node *blackfriday.Node, entering bool) { | ||||
| 	var ( | ||||
| 		start, end string | ||||
| 	) | ||||
| 	if node.IsHeader { | ||||
| 		start = codespanTag | ||||
| 		end = codespanCloseTag | ||||
| 	} | ||||
| 	if entering { | ||||
| 		var start string | ||||
| 		if node.Prev != nil && node.Prev.Type == blackfriday.TableCell { | ||||
| 			out(w, "\t"+start) | ||||
| 		} else { | ||||
| 			out(w, start) | ||||
| 			start = "\t" | ||||
| 		} | ||||
| 		if node.IsHeader { | ||||
| 			start += codespanTag | ||||
| 		} else if nodeLiteralSize(node) > 30 { | ||||
| 			start += tableCellStart | ||||
| 		} | ||||
| 		out(w, start) | ||||
| 	} else { | ||||
| 		// need to carriage return if we are at the end of the header row | ||||
| 		if node.IsHeader && node.Next == nil { | ||||
| 			end = end + crTag | ||||
| 		var end string | ||||
| 		if node.IsHeader { | ||||
| 			end = codespanCloseTag | ||||
| 		} else if nodeLiteralSize(node) > 30 { | ||||
| 			end = tableCellEnd | ||||
| 		} | ||||
| 		if node.Next == nil && end != tableCellEnd { | ||||
| 			// Last cell: need to carriage return if we are at the end of the | ||||
| 			// header row and content isn't wrapped in a "tablecell" | ||||
| 			end += crTag | ||||
| 		} | ||||
| 		out(w, end) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func nodeLiteralSize(node *blackfriday.Node) int { | ||||
| 	total := 0 | ||||
| 	for n := node.FirstChild; n != nil; n = n.FirstChild { | ||||
| 		total += len(n.Literal) | ||||
| 	} | ||||
| 	return total | ||||
| } | ||||
|  | ||||
| // because roff format requires knowing the column count before outputting any table | ||||
| // data we need to walk a table tree and count the columns | ||||
| func countColumns(node *blackfriday.Node) int { | ||||
| @@ -309,15 +309,6 @@ func out(w io.Writer, output string) { | ||||
| 	io.WriteString(w, output) // nolint: errcheck | ||||
| } | ||||
|  | ||||
| func needsBackslash(c byte) bool { | ||||
| 	for _, r := range []byte("-_&\\~") { | ||||
| 		if c == r { | ||||
| 			return true | ||||
| 		} | ||||
| 	} | ||||
| 	return false | ||||
| } | ||||
|  | ||||
| func escapeSpecialChars(w io.Writer, text []byte) { | ||||
| 	for i := 0; i < len(text); i++ { | ||||
| 		// escape initial apostrophe or period | ||||
| @@ -328,7 +319,7 @@ func escapeSpecialChars(w io.Writer, text []byte) { | ||||
| 		// directly copy normal characters | ||||
| 		org := i | ||||
|  | ||||
| 		for i < len(text) && !needsBackslash(text[i]) { | ||||
| 		for i < len(text) && text[i] != '\\' { | ||||
| 			i++ | ||||
| 		} | ||||
| 		if i > org { | ||||
|   | ||||
							
								
								
									
										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 | ||||
|   | ||||
							
								
								
									
										16
									
								
								vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,16 +0,0 @@ | ||||
| sudo: false | ||||
| language: go | ||||
| go: | ||||
|   - 1.x | ||||
|   - master | ||||
| matrix: | ||||
|   allow_failures: | ||||
|     - go: master | ||||
|   fast_finish: true | ||||
| install: | ||||
|   - # Do nothing. This is needed to prevent default install action "go get -t -v ./..." from happening here (we want it to happen inside script step). | ||||
| script: | ||||
|   - go get -t -v ./... | ||||
|   - diff -u <(echo -n) <(gofmt -d -s .) | ||||
|   - go tool vet . | ||||
|   - go test -v -race ./... | ||||
							
								
								
									
										21
									
								
								vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/shurcooL/sanitized_anchor_name/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,21 +0,0 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2015 Dmitri Shuralyov | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
							
								
								
									
										36
									
								
								vendor/github.com/shurcooL/sanitized_anchor_name/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								vendor/github.com/shurcooL/sanitized_anchor_name/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,36 +0,0 @@ | ||||
| sanitized_anchor_name | ||||
| ===================== | ||||
|  | ||||
| [](https://travis-ci.org/shurcooL/sanitized_anchor_name) [](https://godoc.org/github.com/shurcooL/sanitized_anchor_name) | ||||
|  | ||||
| Package sanitized_anchor_name provides a func to create sanitized anchor names. | ||||
|  | ||||
| Its logic can be reused by multiple packages to create interoperable anchor names | ||||
| and links to those anchors. | ||||
|  | ||||
| At this time, it does not try to ensure that generated anchor names | ||||
| are unique, that responsibility falls on the caller. | ||||
|  | ||||
| Installation | ||||
| ------------ | ||||
|  | ||||
| ```bash | ||||
| go get -u github.com/shurcooL/sanitized_anchor_name | ||||
| ``` | ||||
|  | ||||
| Example | ||||
| ------- | ||||
|  | ||||
| ```Go | ||||
| anchorName := sanitized_anchor_name.Create("This is a header") | ||||
|  | ||||
| fmt.Println(anchorName) | ||||
|  | ||||
| // Output: | ||||
| // this-is-a-header | ||||
| ``` | ||||
|  | ||||
| License | ||||
| ------- | ||||
|  | ||||
| -	[MIT License](LICENSE) | ||||
							
								
								
									
										29
									
								
								vendor/github.com/shurcooL/sanitized_anchor_name/main.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/github.com/shurcooL/sanitized_anchor_name/main.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,29 +0,0 @@ | ||||
| // Package sanitized_anchor_name provides a func to create sanitized anchor names. | ||||
| // | ||||
| // Its logic can be reused by multiple packages to create interoperable anchor names | ||||
| // and links to those anchors. | ||||
| // | ||||
| // At this time, it does not try to ensure that generated anchor names | ||||
| // are unique, that responsibility falls on the caller. | ||||
| package sanitized_anchor_name // import "github.com/shurcooL/sanitized_anchor_name" | ||||
|  | ||||
| import "unicode" | ||||
|  | ||||
| // Create returns a sanitized anchor name for the given text. | ||||
| func Create(text string) string { | ||||
| 	var anchorName []rune | ||||
| 	var 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) | ||||
| } | ||||
							
								
								
									
										9
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @@ -179,8 +179,8 @@ github.com/containers/ocicrypt/utils/keyprovider | ||||
| ## explicit; go 1.12 | ||||
| github.com/coreos/go-systemd/v22/daemon | ||||
| github.com/coreos/go-systemd/v22/dbus | ||||
| # github.com/cpuguy83/go-md2man/v2 v2.0.0 | ||||
| ## explicit; go 1.12 | ||||
| # github.com/cpuguy83/go-md2man/v2 v2.0.2 | ||||
| ## explicit; go 1.11 | ||||
| github.com/cpuguy83/go-md2man/v2/md2man | ||||
| # github.com/cyphar/filepath-securejoin v0.2.3 | ||||
| ## explicit; go 1.13 | ||||
| @@ -377,12 +377,9 @@ github.com/prometheus/common/model | ||||
| github.com/prometheus/procfs | ||||
| github.com/prometheus/procfs/internal/fs | ||||
| github.com/prometheus/procfs/internal/util | ||||
| # github.com/russross/blackfriday/v2 v2.0.1 | ||||
| # github.com/russross/blackfriday/v2 v2.1.0 | ||||
| ## explicit | ||||
| github.com/russross/blackfriday/v2 | ||||
| # github.com/shurcooL/sanitized_anchor_name v1.0.0 | ||||
| ## explicit | ||||
| github.com/shurcooL/sanitized_anchor_name | ||||
| # github.com/sirupsen/logrus v1.9.0 | ||||
| ## explicit; go 1.13 | ||||
| github.com/sirupsen/logrus | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sebastiaan van Stijn
					Sebastiaan van Stijn