summaryrefslogtreecommitdiff
path: root/vendor/github.com/yuin/goldmark/extension/tasklist.go
diff options
context:
space:
mode:
authorLibravatar Terin Stock <terinjokes@gmail.com>2025-03-09 17:47:56 +0100
committerLibravatar Terin Stock <terinjokes@gmail.com>2025-12-01 22:08:04 +0100
commitb1af8fd87760b34e3ff2fd3bda38f211815a0473 (patch)
tree9317fad1a7ec298d7a8d2678e4e422953bbc6f33 /vendor/github.com/yuin/goldmark/extension/tasklist.go
parent[chore] update URLs to forked source (diff)
downloadgotosocial-b1af8fd87760b34e3ff2fd3bda38f211815a0473.tar.xz
[chore] remove vendor
Diffstat (limited to 'vendor/github.com/yuin/goldmark/extension/tasklist.go')
-rw-r--r--vendor/github.com/yuin/goldmark/extension/tasklist.go120
1 files changed, 0 insertions, 120 deletions
diff --git a/vendor/github.com/yuin/goldmark/extension/tasklist.go b/vendor/github.com/yuin/goldmark/extension/tasklist.go
deleted file mode 100644
index 4467ebfff..000000000
--- a/vendor/github.com/yuin/goldmark/extension/tasklist.go
+++ /dev/null
@@ -1,120 +0,0 @@
-package extension
-
-import (
- "regexp"
-
- "github.com/yuin/goldmark"
- gast "github.com/yuin/goldmark/ast"
- "github.com/yuin/goldmark/extension/ast"
- "github.com/yuin/goldmark/parser"
- "github.com/yuin/goldmark/renderer"
- "github.com/yuin/goldmark/renderer/html"
- "github.com/yuin/goldmark/text"
- "github.com/yuin/goldmark/util"
-)
-
-var taskListRegexp = regexp.MustCompile(`^\[([\sxX])\]\s*`)
-
-type taskCheckBoxParser struct {
-}
-
-var defaultTaskCheckBoxParser = &taskCheckBoxParser{}
-
-// NewTaskCheckBoxParser returns a new InlineParser that can parse
-// checkboxes in list items.
-// This parser must take precedence over the parser.LinkParser.
-func NewTaskCheckBoxParser() parser.InlineParser {
- return defaultTaskCheckBoxParser
-}
-
-func (s *taskCheckBoxParser) Trigger() []byte {
- return []byte{'['}
-}
-
-func (s *taskCheckBoxParser) Parse(parent gast.Node, block text.Reader, pc parser.Context) gast.Node {
- // Given AST structure must be like
- // - List
- // - ListItem : parent.Parent
- // - TextBlock : parent
- // (current line)
- if parent.Parent() == nil || parent.Parent().FirstChild() != parent {
- return nil
- }
-
- if parent.HasChildren() {
- return nil
- }
- if _, ok := parent.Parent().(*gast.ListItem); !ok {
- return nil
- }
- line, _ := block.PeekLine()
- m := taskListRegexp.FindSubmatchIndex(line)
- if m == nil {
- return nil
- }
- value := line[m[2]:m[3]][0]
- block.Advance(m[1])
- checked := value == 'x' || value == 'X'
- return ast.NewTaskCheckBox(checked)
-}
-
-func (s *taskCheckBoxParser) CloseBlock(parent gast.Node, pc parser.Context) {
- // nothing to do
-}
-
-// TaskCheckBoxHTMLRenderer is a renderer.NodeRenderer implementation that
-// renders checkboxes in list items.
-type TaskCheckBoxHTMLRenderer struct {
- html.Config
-}
-
-// NewTaskCheckBoxHTMLRenderer returns a new TaskCheckBoxHTMLRenderer.
-func NewTaskCheckBoxHTMLRenderer(opts ...html.Option) renderer.NodeRenderer {
- r := &TaskCheckBoxHTMLRenderer{
- Config: html.NewConfig(),
- }
- for _, opt := range opts {
- opt.SetHTMLOption(&r.Config)
- }
- return r
-}
-
-// RegisterFuncs implements renderer.NodeRenderer.RegisterFuncs.
-func (r *TaskCheckBoxHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) {
- reg.Register(ast.KindTaskCheckBox, r.renderTaskCheckBox)
-}
-
-func (r *TaskCheckBoxHTMLRenderer) renderTaskCheckBox(
- w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) {
- if !entering {
- return gast.WalkContinue, nil
- }
- n := node.(*ast.TaskCheckBox)
-
- if n.IsChecked {
- _, _ = w.WriteString(`<input checked="" disabled="" type="checkbox"`)
- } else {
- _, _ = w.WriteString(`<input disabled="" type="checkbox"`)
- }
- if r.XHTML {
- _, _ = w.WriteString(" /> ")
- } else {
- _, _ = w.WriteString("> ")
- }
- return gast.WalkContinue, nil
-}
-
-type taskList struct {
-}
-
-// TaskList is an extension that allow you to use GFM task lists.
-var TaskList = &taskList{}
-
-func (e *taskList) Extend(m goldmark.Markdown) {
- m.Parser().AddOptions(parser.WithInlineParsers(
- util.Prioritized(NewTaskCheckBoxParser(), 0),
- ))
- m.Renderer().AddOptions(renderer.WithNodeRenderers(
- util.Prioritized(NewTaskCheckBoxHTMLRenderer(), 500),
- ))
-}