Codebase list golang-github-yuin-goldmark-highlighting / bee1947
Update upstream source from tag 'upstream/0.0_git20220208.594be19' Update to upstream version '0.0~git20220208.594be19' with Debian dir 250d26d8eeba9782967f582fd61788691297cfc6 Anthony Fok 2 years ago
4 changed file(s) with 81 addition(s) and 82 deletion(s). Raw diff Collapse all Expand all
22 go 1.13
33
44 require (
5 github.com/alecthomas/chroma v0.7.2-0.20200305040604-4f3623dce67a
6 github.com/dlclark/regexp2 v1.2.0 // indirect
7 github.com/yuin/goldmark v1.3.6
5 github.com/alecthomas/chroma v0.10.0
6 github.com/yuin/goldmark v1.4.5
87 )
0 github.com/alecthomas/assert v0.0.0-20170929043011-405dbfeb8e38 h1:smF2tmSOzy2Mm+0dGI2AIUHY+w0BUc+4tn40djz7+6U=
1 github.com/alecthomas/assert v0.0.0-20170929043011-405dbfeb8e38/go.mod h1:r7bzyVFMNntcxPZXK3/+KdruV1H5KSlyVY0gc+NgInI=
2 github.com/alecthomas/chroma v0.7.2-0.20200305040604-4f3623dce67a h1:3v1NrYWWqp2S72e4HLgxKt83B3l0lnORDholH/ihoMM=
3 github.com/alecthomas/chroma v0.7.2-0.20200305040604-4f3623dce67a/go.mod h1:fv5SzZPFJbwp2NXJWpFIX7DZS4HgV1K4ew4Pc2OZD9s=
4 github.com/alecthomas/colour v0.0.0-20160524082231-60882d9e2721 h1:JHZL0hZKJ1VENNfmXvHbgYlbUOvpzYzvy2aZU5gXVeo=
5 github.com/alecthomas/colour v0.0.0-20160524082231-60882d9e2721/go.mod h1:QO9JBoKquHd+jz9nshCh40fOfO+JzsoXy8qTHF68zU0=
6 github.com/alecthomas/kong v0.2.1-0.20190708041108-0548c6b1afae/go.mod h1:+inYUSluD+p4L8KdviBSgzcqEjUQOfC5fQDRFuc36lI=
7 github.com/alecthomas/repr v0.0.0-20180818092828-117648cd9897 h1:p9Sln00KOTlrYkxI1zYWl1QLnEqAqEARBEYa8FQnQcY=
8 github.com/alecthomas/repr v0.0.0-20180818092828-117648cd9897/go.mod h1:xTS7Pm1pD1mvyM075QCDSRqH6qRLXylzS24ZTpRiSzQ=
9 github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 h1:y5HC9v93H5EPKqaS1UYVg1uYah5Xf51mBfIoWehClUQ=
10 github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964/go.mod h1:Xd9hchkHSWYkEqJwUGisez3G1QY8Ryz0sdWrLPMGjLk=
0 github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek=
1 github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s=
112 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
123 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
134 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
14 github.com/dlclark/regexp2 v1.1.6/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
15 github.com/dlclark/regexp2 v1.2.0 h1:8sAhBGEM0dRWogWqWyQeIJnxjWO6oIjl8FKqREDsGfk=
16 github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
17 github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
18 github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs=
19 github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
20 github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
21 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
5 github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E=
6 github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
227 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
238 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
24 github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
25 github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
269 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
27 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
28 github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
29 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
30 github.com/yuin/goldmark v1.3.6 h1:rvdBidUJAJM2O9VLcNTB4oRwxG33uIxY+zUq6yWUT8c=
31 github.com/yuin/goldmark v1.3.6/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
32 golang.org/x/sys v0.0.0-20181128092732-4ed8d59d0b35 h1:YAFjXN64LMvktoUZH9zgY4lGc/msGN7HQfoSuKCgaDU=
33 golang.org/x/sys v0.0.0-20181128092732-4ed8d59d0b35/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
10 github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
11 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
12 github.com/yuin/goldmark v1.4.4 h1:zNWRjYUW32G9KirMXYHQHVNFkXvMI7LpgNW2AgYAoIs=
13 github.com/yuin/goldmark v1.4.4/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg=
14 github.com/yuin/goldmark v1.4.5 h1:4OEQwtW2uLXjEdgnGM3Vg652Pq37X7NOIRzFWb3BzIc=
15 github.com/yuin/goldmark v1.4.5/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg=
16 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
17 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
18 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
19 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
422422 if attrs != nil {
423423 baseLineNumber := 1
424424 if linenostartAttr, ok := attrs.Get(linenostartAttrName); ok {
425 baseLineNumber = int(linenostartAttr.(float64))
426 chromaFormatterOptions = append(chromaFormatterOptions, chromahtml.BaseLineNumber(baseLineNumber))
425 if linenostart, ok := linenostartAttr.(float64); ok {
426 baseLineNumber = int(linenostart)
427 chromaFormatterOptions = append(chromaFormatterOptions, chromahtml.BaseLineNumber(baseLineNumber))
428 }
427429 }
428430 if linesAttr, hasLinesAttr := attrs.Get(highlightLinesAttrName); hasLinesAttr {
429431 if lines, ok := linesAttr.([]interface{}); ok {
452454 }
453455 }
454456 if styleAttr, hasStyleAttr := attrs.Get(styleAttrName); hasStyleAttr {
455 styleStr := string([]byte(styleAttr.([]uint8)))
456 style = styles.Get(styleStr)
457 if st, ok := styleAttr.([]uint8); ok {
458 styleStr := string([]byte(st))
459 style = styles.Get(styleStr)
460 }
457461 }
458462 if _, hasNohlAttr := attrs.Get(nohlAttrName); hasNohlAttr {
459463 nohl = true
6767
6868 if strings.TrimSpace(buffer.String()) != strings.TrimSpace(`
6969 <h1>Title</h1>
70 <div class="highlight"><pre class="chroma"><span class="ln">1</span><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
71 <span class="ln">2</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;ok&#34;</span><span class="p">)</span>
72 <span class="ln">3</span><span class="p">}</span>
73 </pre></div>
70 <div class="highlight"><pre tabindex="0" class="chroma"><code><span class="line"><span class="ln">1</span><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
71 </span></span><span class="line"><span class="ln">2</span><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;ok&#34;</span><span class="p">)</span>
72 </span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="p">}</span>
73 </span></span></code></pre></div>
7474 `) {
75 t.Error("failed to render HTML")
76 }
77
78 expected := strings.TrimSpace(`/* Background */ .chroma { color: #f8f8f2; background-color: #272822 }
75 t.Error("failed to render HTML\n")
76 }
77
78 expected := strings.TrimSpace(`/* Background */ .bg { color: #f8f8f2; background-color: #272822 }
79 /* PreWrapper */ .chroma { color: #f8f8f2; background-color: #272822; }
7980 /* LineNumbers targeted by URL anchor */ .chroma .ln:target { color: #f8f8f2; background-color: #3c3d38 }
8081 /* LineNumbersTable targeted by URL anchor */ .chroma .lnt:target { color: #f8f8f2; background-color: #3c3d38 }
8182 /* Error */ .chroma .err { color: #960050; background-color: #1e0010 }
8283 /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
83 /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
84 /* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #3c3d38 }
85 /* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
86 /* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
84 /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
85 /* LineHighlight */ .chroma .hl { background-color: #3c3d38 }
86 /* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
87 /* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
88 /* Line */ .chroma .line { display: flex; }
8789 /* Keyword */ .chroma .k { color: #66d9ef }
8890 /* KeywordConstant */ .chroma .kc { color: #66d9ef }
8991 /* KeywordDeclaration */ .chroma .kd { color: #66d9ef }
197199 }
198200 if strings.TrimSpace(buffer.String()) != strings.TrimSpace(`
199201 <h1>Title</h1>
200 <pre style="background-color:#fff"><span style="display:block;width:100%;background-color:#e5e5e5"><span style="color:#999;font-weight:bold;font-style:italic">#include</span> <span style="color:#999;font-weight:bold;font-style:italic">&lt;iostream&gt;</span><span style="color:#999;font-weight:bold;font-style:italic">
201 </span></span><span style="display:block;width:100%;background-color:#e5e5e5"><span style="color:#999;font-weight:bold;font-style:italic"></span><span style="color:#458;font-weight:bold">int</span> <span style="color:#900;font-weight:bold">main</span>() {
202 </span> std<span style="color:#000;font-weight:bold">::</span>cout<span style="color:#000;font-weight:bold">&lt;&lt;</span> <span style="color:#d14">&#34;hello&#34;</span> <span style="color:#000;font-weight:bold">&lt;&lt;</span> std<span style="color:#000;font-weight:bold">::</span>endl;
203 }
204 </pre>
202 <pre tabindex="0" style="background-color:#fff;display:grid;"><code><span style="display:flex; background-color:#e5e5e5"><span><span style="color:#999;font-weight:bold;font-style:italic">#include</span> <span style="color:#999;font-weight:bold;font-style:italic">&lt;iostream&gt;</span><span style="color:#999;font-weight:bold;font-style:italic">
203 </span></span></span><span style="display:flex; background-color:#e5e5e5"><span><span style="color:#999;font-weight:bold;font-style:italic"></span><span style="color:#458;font-weight:bold">int</span> <span style="color:#900;font-weight:bold">main</span>() {
204 </span></span><span style="display:flex;"><span> std<span style="color:#000;font-weight:bold">::</span>cout<span style="color:#000;font-weight:bold">&lt;&lt;</span> <span style="color:#d14">&#34;hello&#34;</span> <span style="color:#000;font-weight:bold">&lt;&lt;</span> std<span style="color:#000;font-weight:bold">::</span>endl;
205 </span></span><span style="display:flex;"><span>}
206 </span></span></code></pre>
205207 `) {
206208 t.Error("failed to render HTML")
207209 }
295297
296298 if strings.TrimSpace(buffer.String()) != strings.TrimSpace(`
297299 <h1>Title</h1>
298 <div class="highlight"><pre class="chroma"><span class="ln">1</span><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
299 <span class="ln">2</span> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;ok&#34;</span><span class="p">)</span>
300 <span class="ln">3</span><span class="p">}</span>
301 </pre></div>
300 <div class="highlight"><pre tabindex="0" class="chroma"><code><span class="line"><span class="ln">1</span><span class="cl"><span class="kd">func</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
301 </span></span><span class="line"><span class="ln">2</span><span class="cl"> <span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">&#34;ok&#34;</span><span class="p">)</span>
302 </span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="p">}</span>
303 </span></span></code></pre></div>
302304 `) {
303 t.Error("failed to render HTML")
304 }
305
306 expected := strings.TrimSpace(`/* Background */ .chroma { color: #cccccc; background-color: #1d1d1d }
305 t.Error("failed to render HTML", buffer.String())
306 }
307
308 expected := strings.TrimSpace(`/* Background */ .bg { color: #cccccc; background-color: #1d1d1d }
309 /* PreWrapper */ .chroma { color: #cccccc; background-color: #1d1d1d; }
307310 /* LineNumbers targeted by URL anchor */ .chroma .ln:target { color: #cccccc; background-color: #333333 }
308311 /* LineNumbersTable targeted by URL anchor */ .chroma .lnt:target { color: #cccccc; background-color: #333333 }
309312 /* Error */ .chroma .err { }
310313 /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
311 /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
312 /* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #333333 }
313 /* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #666666 }
314 /* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #666666 }
314 /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
315 /* LineHighlight */ .chroma .hl { background-color: #333333 }
316 /* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #666666 }
317 /* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #666666 }
318 /* Line */ .chroma .line { display: flex; }
315319 /* Keyword */ .chroma .k { color: #cc99cd }
316320 /* KeywordConstant */ .chroma .kc { color: #cc99cd }
317321 /* KeywordDeclaration */ .chroma .kd { color: #cc99cd }
392396 {`hl_lines=["2"]`, []int{2}},
393397 {`hl_lines=["2-3",5],linenostart=5`, []int{2, 3, 5}},
394398 {`hl_lines=["2-3"]`, []int{2, 3}},
399 {`hl_lines=["2-3",5],linenostart="5"`, []int{2, 3}}, // linenostart must be a number. string values are ignored
395400 } {
396401 t.Run(fmt.Sprint(i), func(t *testing.T) {
397402 var buffer bytes.Buffer
413418 }
414419
415420 for _, line := range test.expect {
416 expectStr := fmt.Sprintf("<span class=\"hl\">LINE%d\n</span>", line)
421 expectStr := fmt.Sprintf("<span class=\"line hl\"><span class=\"cl\">LINE%d\n</span></span>", line)
417422 if !strings.Contains(buffer.String(), expectStr) {
418423 t.Fatal("got\n", buffer.String(), "\nexpected\n", expectStr)
419424 }
428433 <span class="lnt">1
429434 </span></td>
430435 <td class="lntd">
431 LINE1
432 </td></tr></table>
436 <span class="line"><span class="cl">LINE1
437 </span></span></td></tr></table>
433438 </div>`
434439
435440 for i, test := range []struct {
438443 lineNumbersInTable bool
439444 expect string
440445 }{
441 {`linenos=true`, false, false, `<span class="ln">1</span>LINE1`},
442 {`linenos=false`, false, false, `LINE1`},
443 {``, true, false, `<span class="ln">1</span>LINE1`},
446 {`linenos=true`, false, false, `<span class="line"><span class="ln">1</span><span class="cl">LINE1
447 </span></span>`},
448 {`linenos=false`, false, false, `<span class="line"><span class="cl">LINE1
449 </span></span>`},
450 {``, true, false, `<span class="line"><span class="ln">1</span><span class="cl">LINE1
451 </span></span>`},
444452 {``, true, true, outputLineNumbersInTable},
445 {`linenos=inline`, true, true, `<span class="ln">1</span>LINE1`},
446 {`linenos=foo`, false, false, `<span class="ln">1</span>LINE1`},
453 {`linenos=inline`, true, true, `<span class="line"><span class="ln">1</span><span class="cl">LINE1
454 </span></span>`},
455 {`linenos=foo`, false, false, `<span class="line"><span class="ln">1</span><span class="cl">LINE1
456 </span></span>`},
447457 {`linenos=table`, false, false, outputLineNumbersInTable},
448458 } {
449459 t.Run(fmt.Sprint(i), func(t *testing.T) {
499509 t.Fatal(err)
500510 }
501511 if strings.TrimSpace(buffer.String()) != strings.TrimSpace(`
502 <pre class="chroma"><span class="ln">1</span>LINE
503 </pre>
512 <pre tabindex="0" class="chroma"><code><span class="line"><span class="ln">1</span><span class="cl">LINE
513 </span></span></code></pre>
504514 `) {
505515 t.Errorf("render mismatch, got\n%s", buffer.String())
506516 }
531541 t.Fatal(err)
532542 }
533543 if strings.TrimSpace(buffer.String()) != strings.TrimSpace(`
534 <pre class="chroma"><span class="ln">1</span><span class="nf">GET</span> <span class="nn">/foo</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
535 <span class="ln">2</span><span class="n">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
536 <span class="ln">3</span><span class="n">User-Agent</span><span class="o">:</span> <span class="l">foo</span>
537 <span class="ln">4</span>
538 <span class="ln">5</span><span class="p">{</span>
539 <span class="ln">6</span> <span class="nt">&#34;hello&#34;</span><span class="p">:</span> <span class="s2">&#34;world&#34;</span>
540 <span class="ln">7</span><span class="p">}</span>
541 </pre>
544 <pre tabindex="0" class="chroma"><code><span class="line"><span class="ln">1</span><span class="cl"><span class="nf">GET</span> <span class="nn">/foo</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
545 </span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
546 </span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">User-Agent</span><span class="o">:</span> <span class="l">foo</span>
547 </span></span><span class="line"><span class="ln">4</span><span class="cl">
548 </span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="p">{</span>
549 </span></span><span class="line"><span class="ln">6</span><span class="cl"> <span class="nt">&#34;hello&#34;</span><span class="p">:</span> <span class="s2">&#34;world&#34;</span>
550 </span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="p">}</span>
551 </span></span></code></pre>
542552 `) {
543553 t.Errorf("render mismatch, got\n%s", buffer.String())
544554 }