summaryrefslogtreecommitdiff
path: root/vendor/github.com/yuin/goldmark/extension/strikethrough.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/yuin/goldmark/extension/strikethrough.go')
-rw-r--r--vendor/github.com/yuin/goldmark/extension/strikethrough.go118
1 files changed, 0 insertions, 118 deletions
diff --git a/vendor/github.com/yuin/goldmark/extension/strikethrough.go b/vendor/github.com/yuin/goldmark/extension/strikethrough.go
deleted file mode 100644
index 9fc0becfd..000000000
--- a/vendor/github.com/yuin/goldmark/extension/strikethrough.go
+++ /dev/null
@@ -1,118 +0,0 @@
-package extension
-
-import (
- "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"
-)
-
-type strikethroughDelimiterProcessor struct {
-}
-
-func (p *strikethroughDelimiterProcessor) IsDelimiter(b byte) bool {
- return b == '~'
-}
-
-func (p *strikethroughDelimiterProcessor) CanOpenCloser(opener, closer *parser.Delimiter) bool {
- return opener.Char == closer.Char
-}
-
-func (p *strikethroughDelimiterProcessor) OnMatch(consumes int) gast.Node {
- return ast.NewStrikethrough()
-}
-
-var defaultStrikethroughDelimiterProcessor = &strikethroughDelimiterProcessor{}
-
-type strikethroughParser struct {
-}
-
-var defaultStrikethroughParser = &strikethroughParser{}
-
-// NewStrikethroughParser return a new InlineParser that parses
-// strikethrough expressions.
-func NewStrikethroughParser() parser.InlineParser {
- return defaultStrikethroughParser
-}
-
-func (s *strikethroughParser) Trigger() []byte {
- return []byte{'~'}
-}
-
-func (s *strikethroughParser) Parse(parent gast.Node, block text.Reader, pc parser.Context) gast.Node {
- before := block.PrecendingCharacter()
- line, segment := block.PeekLine()
- node := parser.ScanDelimiter(line, before, 1, defaultStrikethroughDelimiterProcessor)
- if node == nil || node.OriginalLength > 2 || before == '~' {
- return nil
- }
-
- node.Segment = segment.WithStop(segment.Start + node.OriginalLength)
- block.Advance(node.OriginalLength)
- pc.PushDelimiter(node)
- return node
-}
-
-func (s *strikethroughParser) CloseBlock(parent gast.Node, pc parser.Context) {
- // nothing to do
-}
-
-// StrikethroughHTMLRenderer is a renderer.NodeRenderer implementation that
-// renders Strikethrough nodes.
-type StrikethroughHTMLRenderer struct {
- html.Config
-}
-
-// NewStrikethroughHTMLRenderer returns a new StrikethroughHTMLRenderer.
-func NewStrikethroughHTMLRenderer(opts ...html.Option) renderer.NodeRenderer {
- r := &StrikethroughHTMLRenderer{
- Config: html.NewConfig(),
- }
- for _, opt := range opts {
- opt.SetHTMLOption(&r.Config)
- }
- return r
-}
-
-// RegisterFuncs implements renderer.NodeRenderer.RegisterFuncs.
-func (r *StrikethroughHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegisterer) {
- reg.Register(ast.KindStrikethrough, r.renderStrikethrough)
-}
-
-// StrikethroughAttributeFilter defines attribute names which dd elements can have.
-var StrikethroughAttributeFilter = html.GlobalAttributeFilter
-
-func (r *StrikethroughHTMLRenderer) renderStrikethrough(
- w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) {
- if entering {
- if n.Attributes() != nil {
- _, _ = w.WriteString("<del")
- html.RenderAttributes(w, n, StrikethroughAttributeFilter)
- _ = w.WriteByte('>')
- } else {
- _, _ = w.WriteString("<del>")
- }
- } else {
- _, _ = w.WriteString("</del>")
- }
- return gast.WalkContinue, nil
-}
-
-type strikethrough struct {
-}
-
-// Strikethrough is an extension that allow you to use strikethrough expression like '~~text~~' .
-var Strikethrough = &strikethrough{}
-
-func (e *strikethrough) Extend(m goldmark.Markdown) {
- m.Parser().AddOptions(parser.WithInlineParsers(
- util.Prioritized(NewStrikethroughParser(), 500),
- ))
- m.Renderer().AddOptions(renderer.WithNodeRenderers(
- util.Prioritized(NewStrikethroughHTMLRenderer(), 500),
- ))
-}