Skip to content

Commit

Permalink
internal/frontend: use GFM features in markdown parser
Browse files Browse the repository at this point in the history
This enables all the GFM features in the markdown parser, and adds
table support to walkBlocks and cases in rewriteHeadingsBlocks.

For golang/go#61399

Change-Id: I6563a5c8b0b9a838e8875e3a2ef5afe3cc155281
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/550035
LUCI-TryBot-Result: Go LUCI <[email protected]>
kokoro-CI: kokoro <[email protected]>
Reviewed-by: Jonathan Amsterdam <[email protected]>
  • Loading branch information
matloob committed Dec 18, 2023
1 parent 035a41c commit 7246abc
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 6 deletions.
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ require (
github.com/jba/templatecheck v0.6.0
github.com/lib/pq v1.10.9
github.com/russross/blackfriday/v2 v2.1.0
github.com/yuin/goldmark v1.4.13
github.com/yuin/goldmark v1.6.0
github.com/yuin/goldmark-emoji v1.0.1
go.opencensus.io v0.24.0
golang.org/x/mod v0.14.0
Expand All @@ -40,7 +40,7 @@ require (
google.golang.org/grpc v1.57.0
google.golang.org/protobuf v1.31.0
gopkg.in/yaml.v3 v3.0.1
rsc.io/markdown v0.0.0-20231114125513-6fc7bf989e0c
rsc.io/markdown v0.0.0-20231214224604-88bb533a6020
)

require (
Expand Down
7 changes: 4 additions & 3 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1037,8 +1037,9 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68=
github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/yuin/goldmark-emoji v1.0.1 h1:ctuWEyzGBwiucEqxzwe0SOYDXPAucOrE9NQC18Wa1os=
github.com/yuin/goldmark-emoji v1.0.1/go.mod h1:2w1E6FEWLcDQkoTE+7HU6QF1F6SLlNGjRIBbIZQFqkQ=
github.com/yuin/gopher-lua v0.0.0-20200816102855-ee81675732da h1:NimzV1aGyq29m5ukMK0AMWEhFaL/lrEOaephfuoiARg=
Expand Down Expand Up @@ -1742,8 +1743,8 @@ modernc.org/z v1.0.1-0.20210308123920-1f282aa71362/go.mod h1:8/SRk5C/HgiQWCgXdfp
modernc.org/z v1.0.1/go.mod h1:8/SRk5C/HgiQWCgXdfpb+1RvhORdkz5sw72d3jjtyqA=
modernc.org/zappy v1.0.0/go.mod h1:hHe+oGahLVII/aTTyWK/b53VDHMAGCBYYeZ9sn83HC4=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/markdown v0.0.0-20231114125513-6fc7bf989e0c h1:HaCtoXmNbydct3DDtBACBsvfOdbU5sH7TdtkrBmylco=
rsc.io/markdown v0.0.0-20231114125513-6fc7bf989e0c/go.mod h1:NAB5d9ChqypB0BfWUzhyn7GTyPwr2Q0KxmrAFJnOT/g=
rsc.io/markdown v0.0.0-20231214224604-88bb533a6020 h1:GqQcl3Kno/rOntek8/d8axYjau8r/c1zVFojXS6WJFI=
rsc.io/markdown v0.0.0-20231214224604-88bb533a6020/go.mod h1:8xcPgWmwlZONN1D9bjxtHEjrUtSEa3fakVF8iaewYKQ=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
Expand Down
25 changes: 24 additions & 1 deletion internal/frontend/markdown.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,15 @@ func processReadmeMarkdown(ctx context.Context, readme *internal.Readme, info *s
return &Readme{HTML: h}, nil
}

var p markdown.Parser
p := markdown.Parser{
HeadingIDs: true,
Strikethrough: true,
TaskListItems: true,
AutoLinkText: true,
AutoLinkAssumeHTTP: true,
Table: true,
Emoji: true,
}
doc := p.Parse(readme.Contents)
(&linkRewriter{info, readme}).rewriteLinks(doc)
rewriteImgSrc(doc, info, readme)
Expand Down Expand Up @@ -133,6 +141,15 @@ func walkBlocks(blocks []markdown.Block, walkFunc func(b markdown.Block) error)
case *markdown.HTMLBlock:
case *markdown.CodeBlock:
case *markdown.Empty:
case *markdown.Table:
for _, t := range x.Header {
walkBlocks([]markdown.Block{t}, walkFunc)
}
for _, r := range x.Rows {
for _, t := range r {
walkBlocks([]markdown.Block{t}, walkFunc)
}
}
case *markdown.ThematicBreak:
default:
return fmt.Errorf("unhandled block type %T", x)
Expand Down Expand Up @@ -296,6 +313,12 @@ func transformHeadingsToHTML(doc *markdown.Document) {
rewriteHeadingsBlocks = func(blocks []markdown.Block) {
for i, b := range blocks {
switch x := b.(type) {
case *markdown.Text:
case *markdown.HTMLBlock:
case *markdown.Table:
case *markdown.Empty:
case *markdown.CodeBlock:
case *markdown.ThematicBreak:
case *markdown.Paragraph:
rewriteHeadingsBlocks([]markdown.Block{x.Text})
case *markdown.List:
Expand Down

0 comments on commit 7246abc

Please sign in to comment.