diff options
| author | 2023-08-21 06:39:14 +0000 | |
|---|---|---|
| committer | 2023-08-21 06:39:14 +0000 | |
| commit | 36dceac56c467033648590dd7e6ea100e1f824a2 (patch) | |
| tree | 54d1d6451c63785278ad5c1a6331a1d38fe2363e /vendor/github.com/yuin/goldmark/extension | |
| parent | [feature/bugfix] Probe S3 storage for CSP uri, add config flag for extra URIs... (diff) | |
| download | gotosocial-36dceac56c467033648590dd7e6ea100e1f824a2.tar.xz | |
[chore]: Bump github.com/yuin/goldmark from 1.5.5 to 1.5.6 (#2140)
Diffstat (limited to 'vendor/github.com/yuin/goldmark/extension')
11 files changed, 93 insertions, 59 deletions
diff --git a/vendor/github.com/yuin/goldmark/extension/ast/footnote.go b/vendor/github.com/yuin/goldmark/extension/ast/footnote.go index 97fea4403..b24eafe67 100644 --- a/vendor/github.com/yuin/goldmark/extension/ast/footnote.go +++ b/vendor/github.com/yuin/goldmark/extension/ast/footnote.go @@ -88,7 +88,7 @@ type Footnote struct { func (n *Footnote) Dump(source []byte, level int) { m := map[string]string{} m["Index"] = fmt.Sprintf("%v", n.Index) - m["Ref"] = fmt.Sprintf("%s", n.Ref) + m["Ref"] = string(n.Ref) gast.DumpHelper(n, source, level, m, nil) } diff --git a/vendor/github.com/yuin/goldmark/extension/ast/table.go b/vendor/github.com/yuin/goldmark/extension/ast/table.go index e9eff3ceb..4142e33c7 100644 --- a/vendor/github.com/yuin/goldmark/extension/ast/table.go +++ b/vendor/github.com/yuin/goldmark/extension/ast/table.go @@ -2,8 +2,9 @@ package ast import ( "fmt" - gast "github.com/yuin/goldmark/ast" "strings" + + gast "github.com/yuin/goldmark/ast" ) // Alignment is a text alignment of table cells. @@ -45,7 +46,7 @@ type Table struct { Alignments []Alignment } -// Dump implements Node.Dump +// Dump implements Node.Dump. func (n *Table) Dump(source []byte, level int) { gast.DumpHelper(n, source, level, nil, func(level int) { indent := strings.Repeat(" ", level) diff --git a/vendor/github.com/yuin/goldmark/extension/cjk.go b/vendor/github.com/yuin/goldmark/extension/cjk.go index cb6f9553d..14bcde1e1 100644 --- a/vendor/github.com/yuin/goldmark/extension/cjk.go +++ b/vendor/github.com/yuin/goldmark/extension/cjk.go @@ -29,6 +29,7 @@ type cjk struct { EscapedSpace bool } +// CJK is a goldmark extension that provides functionalities for CJK languages. var CJK = NewCJK(WithEastAsianLineBreaks(), WithEscapedSpace()) // NewCJK returns a new extension with given options. diff --git a/vendor/github.com/yuin/goldmark/extension/definition_list.go b/vendor/github.com/yuin/goldmark/extension/definition_list.go index d2f5fecbe..3e64dcf7f 100644 --- a/vendor/github.com/yuin/goldmark/extension/definition_list.go +++ b/vendor/github.com/yuin/goldmark/extension/definition_list.go @@ -113,7 +113,8 @@ func (b *definitionDescriptionParser) Trigger() []byte { return []byte{':'} } -func (b *definitionDescriptionParser) Open(parent gast.Node, reader text.Reader, pc parser.Context) (gast.Node, parser.State) { +func (b *definitionDescriptionParser) Open( + parent gast.Node, reader text.Reader, pc parser.Context) (gast.Node, parser.State) { line, _ := reader.PeekLine() pos := pc.BlockOffset() indent := pc.BlockIndent() @@ -199,7 +200,8 @@ func (r *DefinitionListHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFunc // DefinitionListAttributeFilter defines attribute names which dl elements can have. var DefinitionListAttributeFilter = html.GlobalAttributeFilter -func (r *DefinitionListHTMLRenderer) renderDefinitionList(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *DefinitionListHTMLRenderer) renderDefinitionList( + w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { if entering { if n.Attributes() != nil { _, _ = w.WriteString("<dl") @@ -217,7 +219,8 @@ func (r *DefinitionListHTMLRenderer) renderDefinitionList(w util.BufWriter, sour // DefinitionTermAttributeFilter defines attribute names which dd elements can have. var DefinitionTermAttributeFilter = html.GlobalAttributeFilter -func (r *DefinitionListHTMLRenderer) renderDefinitionTerm(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *DefinitionListHTMLRenderer) renderDefinitionTerm( + w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { if entering { if n.Attributes() != nil { _, _ = w.WriteString("<dt") @@ -235,7 +238,8 @@ func (r *DefinitionListHTMLRenderer) renderDefinitionTerm(w util.BufWriter, sour // DefinitionDescriptionAttributeFilter defines attribute names which dd elements can have. var DefinitionDescriptionAttributeFilter = html.GlobalAttributeFilter -func (r *DefinitionListHTMLRenderer) renderDefinitionDescription(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *DefinitionListHTMLRenderer) renderDefinitionDescription( + w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { if entering { n := node.(*ast.DefinitionDescription) _, _ = w.WriteString("<dd") diff --git a/vendor/github.com/yuin/goldmark/extension/footnote.go b/vendor/github.com/yuin/goldmark/extension/footnote.go index 09b6fa8b0..d1b67aa77 100644 --- a/vendor/github.com/yuin/goldmark/extension/footnote.go +++ b/vendor/github.com/yuin/goldmark/extension/footnote.go @@ -44,8 +44,8 @@ func (b *footnoteBlockParser) Open(parent gast.Node, reader text.Reader, pc pars return nil, parser.NoChildren } open := pos + 1 - closes := 0 - closure := util.FindClosure(line[pos+1:], '[', ']', false, false) + var closes int + closure := util.FindClosure(line[pos+1:], '[', ']', false, false) //nolint:staticcheck closes = pos + 1 + closure next := closes + 1 if closure > -1 { @@ -136,7 +136,7 @@ func (s *footnoteParser) Parse(parent gast.Node, block text.Reader, pc parser.Co return nil } open := pos - closure := util.FindClosure(line[pos:], '[', ']', false, false) + closure := util.FindClosure(line[pos:], '[', ']', false, false) //nolint:staticcheck if closure < 0 { return nil } @@ -156,7 +156,7 @@ func (s *footnoteParser) Parse(parent gast.Node, block text.Reader, pc parser.Co d := def.(*ast.Footnote) if bytes.Equal(d.Ref, value) { if d.Index < 0 { - list.Count += 1 + list.Count++ d.Index = list.Count } index = d.Index @@ -272,9 +272,9 @@ func (a *footnoteASTTransformer) Transform(node *gast.Document, reader text.Read // FootnoteConfig holds configuration values for the footnote extension. // // Link* and Backlink* configurations have some variables: -// Occurrances of “^^” in the string will be replaced by the +// Occurrences of “^^” in the string will be replaced by the // corresponding footnote number in the HTML output. -// Occurrances of “%%” will be replaced by a number for the +// Occurrences of “%%” will be replaced by a number for the // reference (footnotes can have multiple references). type FootnoteConfig struct { html.Config @@ -525,7 +525,8 @@ func (r *FootnoteHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRegist reg.Register(ast.KindFootnoteList, r.renderFootnoteList) } -func (r *FootnoteHTMLRenderer) renderFootnoteLink(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *FootnoteHTMLRenderer) renderFootnoteLink( + w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { if entering { n := node.(*ast.FootnoteLink) is := strconv.Itoa(n.Index) @@ -556,7 +557,8 @@ func (r *FootnoteHTMLRenderer) renderFootnoteLink(w util.BufWriter, source []byt return gast.WalkContinue, nil } -func (r *FootnoteHTMLRenderer) renderFootnoteBacklink(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *FootnoteHTMLRenderer) renderFootnoteBacklink( + w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { if entering { n := node.(*ast.FootnoteBacklink) is := strconv.Itoa(n.Index) @@ -581,7 +583,8 @@ func (r *FootnoteHTMLRenderer) renderFootnoteBacklink(w util.BufWriter, source [ return gast.WalkContinue, nil } -func (r *FootnoteHTMLRenderer) renderFootnote(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *FootnoteHTMLRenderer) renderFootnote( + w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { n := node.(*ast.Footnote) is := strconv.Itoa(n.Index) if entering { @@ -600,7 +603,8 @@ func (r *FootnoteHTMLRenderer) renderFootnote(w util.BufWriter, source []byte, n return gast.WalkContinue, nil } -func (r *FootnoteHTMLRenderer) renderFootnoteList(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *FootnoteHTMLRenderer) renderFootnoteList( + w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { if entering { _, _ = w.WriteString(`<div class="footnotes" role="doc-endnotes"`) if node.Attributes() != nil { diff --git a/vendor/github.com/yuin/goldmark/extension/linkify.go b/vendor/github.com/yuin/goldmark/extension/linkify.go index 2f046eb54..0f23e907d 100644 --- a/vendor/github.com/yuin/goldmark/extension/linkify.go +++ b/vendor/github.com/yuin/goldmark/extension/linkify.go @@ -11,9 +11,9 @@ import ( "github.com/yuin/goldmark/util" ) -var wwwURLRegxp = regexp.MustCompile(`^www\.[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-z]+(?:[/#?][-a-zA-Z0-9@:%_\+.~#!?&/=\(\);,'">\^{}\[\]` + "`" + `]*)?`) +var wwwURLRegxp = regexp.MustCompile(`^www\.[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-z]+(?:[/#?][-a-zA-Z0-9@:%_\+.~#!?&/=\(\);,'">\^{}\[\]` + "`" + `]*)?`) //nolint:golint,lll -var urlRegexp = regexp.MustCompile(`^(?:http|https|ftp)://[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-z]+(?::\d+)?(?:[/#?][-a-zA-Z0-9@:%_+.~#$!?&/=\(\);,'">\^{}\[\]` + "`" + `]*)?`) +var urlRegexp = regexp.MustCompile(`^(?:http|https|ftp)://[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-z]+(?::\d+)?(?:[/#?][-a-zA-Z0-9@:%_+.~#$!?&/=\(\);,'">\^{}\[\]` + "`" + `]*)?`) //nolint:golint,lll // An LinkifyConfig struct is a data structure that holds configuration of the // Linkify extension. @@ -92,9 +92,6 @@ func WithLinkifyURLRegexp(value *regexp.Regexp) LinkifyOption { } } -// WithLinkifyWWWRegexp is a functional option that specify -// a pattern of the URL without a protocol. -// This pattern must start with 'www.' . type withLinkifyWWWRegexp struct { value *regexp.Regexp } @@ -107,14 +104,15 @@ func (o *withLinkifyWWWRegexp) SetLinkifyOption(p *LinkifyConfig) { p.WWWRegexp = o.value } +// WithLinkifyWWWRegexp is a functional option that specify +// a pattern of the URL without a protocol. +// This pattern must start with 'www.' . func WithLinkifyWWWRegexp(value *regexp.Regexp) LinkifyOption { return &withLinkifyWWWRegexp{ value: value, } } -// WithLinkifyWWWRegexp is a functional otpion that specify -// a pattern of the email address. type withLinkifyEmailRegexp struct { value *regexp.Regexp } @@ -127,6 +125,8 @@ func (o *withLinkifyEmailRegexp) SetLinkifyOption(p *LinkifyConfig) { p.EmailRegexp = o.value } +// WithLinkifyEmailRegexp is a functional otpion that specify +// a pattern of the email address. func WithLinkifyEmailRegexp(value *regexp.Regexp) LinkifyOption { return &withLinkifyEmailRegexp{ value: value, @@ -303,6 +303,8 @@ type linkify struct { // Linkify is an extension that allow you to parse text that seems like a URL. var Linkify = &linkify{} +// NewLinkify creates a new [goldmark.Extender] that +// allow you to parse text that seems like a URL. func NewLinkify(opts ...LinkifyOption) goldmark.Extender { return &linkify{ options: opts, diff --git a/vendor/github.com/yuin/goldmark/extension/package.go b/vendor/github.com/yuin/goldmark/extension/package.go new file mode 100644 index 000000000..2ec1d1eb2 --- /dev/null +++ b/vendor/github.com/yuin/goldmark/extension/package.go @@ -0,0 +1,2 @@ +// Package extension is a collection of builtin extensions. +package extension diff --git a/vendor/github.com/yuin/goldmark/extension/strikethrough.go b/vendor/github.com/yuin/goldmark/extension/strikethrough.go index 1b629ad8f..7d1356938 100644 --- a/vendor/github.com/yuin/goldmark/extension/strikethrough.go +++ b/vendor/github.com/yuin/goldmark/extension/strikethrough.go @@ -85,7 +85,8 @@ func (r *StrikethroughHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncR // 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) { +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") diff --git a/vendor/github.com/yuin/goldmark/extension/table.go b/vendor/github.com/yuin/goldmark/extension/table.go index 48d0d6827..2fe7a5101 100644 --- a/vendor/github.com/yuin/goldmark/extension/table.go +++ b/vendor/github.com/yuin/goldmark/extension/table.go @@ -23,7 +23,7 @@ type escapedPipeCell struct { Transformed bool } -// TableCellAlignMethod indicates how are table cells aligned in HTML format.indicates how are table cells aligned in HTML format. +// TableCellAlignMethod indicates how are table cells aligned in HTML format. type TableCellAlignMethod int const ( @@ -181,7 +181,8 @@ func (b *tableParagraphTransformer) Transform(node *gast.Paragraph, reader text. } } -func (b *tableParagraphTransformer) parseRow(segment text.Segment, alignments []ast.Alignment, isHeader bool, reader text.Reader, pc parser.Context) *ast.TableRow { +func (b *tableParagraphTransformer) parseRow(segment text.Segment, + alignments []ast.Alignment, isHeader bool, reader text.Reader, pc parser.Context) *ast.TableRow { source := reader.Source() line := segment.Value(source) pos := 0 @@ -369,7 +370,8 @@ var TableAttributeFilter = html.GlobalAttributeFilter.Extend( []byte("width"), // [Deprecated] ) -func (r *TableHTMLRenderer) renderTable(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *TableHTMLRenderer) renderTable( + w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { if entering { _, _ = w.WriteString("<table") if n.Attributes() != nil { @@ -391,7 +393,8 @@ var TableHeaderAttributeFilter = html.GlobalAttributeFilter.Extend( []byte("valign"), // [Deprecated since HTML4] [Obsolete since HTML5] ) -func (r *TableHTMLRenderer) renderTableHeader(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *TableHTMLRenderer) renderTableHeader( + w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { if entering { _, _ = w.WriteString("<thead") if n.Attributes() != nil { @@ -418,7 +421,8 @@ var TableRowAttributeFilter = html.GlobalAttributeFilter.Extend( []byte("valign"), // [Obsolete since HTML5] ) -func (r *TableHTMLRenderer) renderTableRow(w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *TableHTMLRenderer) renderTableRow( + w util.BufWriter, source []byte, n gast.Node, entering bool) (gast.WalkStatus, error) { if entering { _, _ = w.WriteString("<tr") if n.Attributes() != nil { @@ -445,12 +449,14 @@ var TableThCellAttributeFilter = html.GlobalAttributeFilter.Extend( []byte("charoff"), // [Obsolete since HTML5] []byte("colspan"), // [OK] Number of columns that the cell is to span - []byte("headers"), // [OK] This attribute contains a list of space-separated strings, each corresponding to the id attribute of the <th> elements that apply to this element + []byte("headers"), // [OK] This attribute contains a list of space-separated + // strings, each corresponding to the id attribute of the <th> elements that apply to this element []byte("height"), // [Deprecated since HTML4] [Obsolete since HTML5] []byte("rowspan"), // [OK] Number of rows that the cell is to span - []byte("scope"), // [OK] This enumerated attribute defines the cells that the header (defined in the <th>) element relates to [NOT OK in <td>] + []byte("scope"), // [OK] This enumerated attribute defines the cells that + // the header (defined in the <th>) element relates to [NOT OK in <td>] []byte("valign"), // [Obsolete since HTML5] []byte("width"), // [Deprecated since HTML4] [Obsolete since HTML5] @@ -466,7 +472,8 @@ var TableTdCellAttributeFilter = html.GlobalAttributeFilter.Extend( []byte("charoff"), // [Obsolete since HTML5] []byte("colspan"), // [OK] Number of columns that the cell is to span - []byte("headers"), // [OK] This attribute contains a list of space-separated strings, each corresponding to the id attribute of the <th> elements that apply to this element + []byte("headers"), // [OK] This attribute contains a list of space-separated + // strings, each corresponding to the id attribute of the <th> elements that apply to this element []byte("height"), // [Deprecated since HTML4] [Obsolete since HTML5] @@ -477,7 +484,8 @@ var TableTdCellAttributeFilter = html.GlobalAttributeFilter.Extend( []byte("width"), // [Deprecated since HTML4] [Obsolete since HTML5] ) -func (r *TableHTMLRenderer) renderTableCell(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { +func (r *TableHTMLRenderer) renderTableCell( + w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { n := node.(*ast.TableCell) tag := "td" if n.Parent().Kind() == ast.KindTableHeader { diff --git a/vendor/github.com/yuin/goldmark/extension/tasklist.go b/vendor/github.com/yuin/goldmark/extension/tasklist.go index 1f3e52c20..dc86c374f 100644 --- a/vendor/github.com/yuin/goldmark/extension/tasklist.go +++ b/vendor/github.com/yuin/goldmark/extension/tasklist.go @@ -1,6 +1,8 @@ package extension import ( + "regexp" + "github.com/yuin/goldmark" gast "github.com/yuin/goldmark/ast" "github.com/yuin/goldmark/extension/ast" @@ -9,7 +11,6 @@ import ( "github.com/yuin/goldmark/renderer/html" "github.com/yuin/goldmark/text" "github.com/yuin/goldmark/util" - "regexp" ) var taskListRegexp = regexp.MustCompile(`^\[([\sxX])\]\s*`) @@ -80,21 +81,22 @@ func (r *TaskCheckBoxHTMLRenderer) RegisterFuncs(reg renderer.NodeRendererFuncRe reg.Register(ast.KindTaskCheckBox, r.renderTaskCheckBox) } -func (r *TaskCheckBoxHTMLRenderer) renderTaskCheckBox(w util.BufWriter, source []byte, node gast.Node, entering bool) (gast.WalkStatus, error) { +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"`) + _, _ = w.WriteString(`<input checked="" disabled="" type="checkbox"`) } else { - w.WriteString(`<input disabled="" type="checkbox"`) + _, _ = w.WriteString(`<input disabled="" type="checkbox"`) } if r.XHTML { - w.WriteString(" /> ") + _, _ = w.WriteString(" /> ") } else { - w.WriteString("> ") + _, _ = w.WriteString("> ") } return gast.WalkContinue, nil } diff --git a/vendor/github.com/yuin/goldmark/extension/typographer.go b/vendor/github.com/yuin/goldmark/extension/typographer.go index f56c06f74..259c4f72f 100644 --- a/vendor/github.com/yuin/goldmark/extension/typographer.go +++ b/vendor/github.com/yuin/goldmark/extension/typographer.go @@ -36,25 +36,25 @@ func getUnclosedCounter(pc parser.Context) *unclosedCounter { type TypographicPunctuation int const ( - // LeftSingleQuote is ' + // LeftSingleQuote is ' . LeftSingleQuote TypographicPunctuation = iota + 1 - // RightSingleQuote is ' + // RightSingleQuote is ' . RightSingleQuote - // LeftDoubleQuote is " + // LeftDoubleQuote is " . LeftDoubleQuote - // RightDoubleQuote is " + // RightDoubleQuote is " . RightDoubleQuote - // EnDash is -- + // EnDash is -- . EnDash - // EmDash is --- + // EmDash is --- . EmDash - // Ellipsis is ... + // Ellipsis is ... . Ellipsis - // LeftAngleQuote is << + // LeftAngleQuote is << . LeftAngleQuote - // RightAngleQuote is >> + // RightAngleQuote is >> . RightAngleQuote - // Apostrophe is ' + // Apostrophe is ' . Apostrophe typographicPunctuationMax @@ -218,7 +218,8 @@ func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser if c == '\'' { if s.Substitutions[Apostrophe] != nil { // Handle decade abbrevations such as '90s - if d.CanOpen && !d.CanClose && len(line) > 3 && util.IsNumeric(line[1]) && util.IsNumeric(line[2]) && line[3] == 's' { + if d.CanOpen && !d.CanClose && len(line) > 3 && + util.IsNumeric(line[1]) && util.IsNumeric(line[2]) && line[3] == 's' { after := rune(' ') if len(line) > 4 { after = util.ToRune(line, 4) @@ -231,7 +232,8 @@ func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser } } // special cases: 'twas, 'em, 'net - if len(line) > 1 && (unicode.IsPunct(before) || unicode.IsSpace(before)) && (line[1] == 't' || line[1] == 'e' || line[1] == 'n' || line[1] == 'l') { + if len(line) > 1 && (unicode.IsPunct(before) || unicode.IsSpace(before)) && + (line[1] == 't' || line[1] == 'e' || line[1] == 'n' || line[1] == 'l') { node := gast.NewString(s.Substitutions[Apostrophe]) node.SetCode(true) block.Advance(1) @@ -239,7 +241,8 @@ func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser } // Convert normal apostrophes. This is probably more flexible than necessary but // converts any apostrophe in between two alphanumerics. - if len(line) > 1 && (unicode.IsDigit(before) || unicode.IsLetter(before)) && (unicode.IsLetter(util.ToRune(line, 1))) { + if len(line) > 1 && (unicode.IsDigit(before) || unicode.IsLetter(before)) && + (unicode.IsLetter(util.ToRune(line, 1))) { node := gast.NewString(s.Substitutions[Apostrophe]) node.SetCode(true) block.Advance(1) @@ -249,11 +252,14 @@ func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser if s.Substitutions[LeftSingleQuote] != nil && d.CanOpen && !d.CanClose { nt := LeftSingleQuote // special cases: Alice's, I'm, Don't, You'd - if len(line) > 1 && (line[1] == 's' || line[1] == 'm' || line[1] == 't' || line[1] == 'd') && (len(line) < 3 || util.IsPunct(line[2]) || util.IsSpace(line[2])) { + if len(line) > 1 && (line[1] == 's' || line[1] == 'm' || line[1] == 't' || line[1] == 'd') && + (len(line) < 3 || util.IsPunct(line[2]) || util.IsSpace(line[2])) { nt = RightSingleQuote } // special cases: I've, I'll, You're - if len(line) > 2 && ((line[1] == 'v' && line[2] == 'e') || (line[1] == 'l' && line[2] == 'l') || (line[1] == 'r' && line[2] == 'e')) && (len(line) < 4 || util.IsPunct(line[3]) || util.IsSpace(line[3])) { + if len(line) > 2 && ((line[1] == 'v' && line[2] == 'e') || + (line[1] == 'l' && line[2] == 'l') || (line[1] == 'r' && line[2] == 'e')) && + (len(line) < 4 || util.IsPunct(line[3]) || util.IsSpace(line[3])) { nt = RightSingleQuote } if nt == LeftSingleQuote { @@ -266,8 +272,9 @@ func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser return node } if s.Substitutions[RightSingleQuote] != nil { - // plural possesives and abbreviations: Smiths', doin' - if len(line) > 1 && unicode.IsSpace(util.ToRune(line, 0)) || unicode.IsPunct(util.ToRune(line, 0)) && (len(line) > 2 && !unicode.IsDigit(util.ToRune(line, 1))) { + // plural possesive and abbreviations: Smiths', doin' + if len(line) > 1 && unicode.IsSpace(util.ToRune(line, 0)) || unicode.IsPunct(util.ToRune(line, 0)) && + (len(line) > 2 && !unicode.IsDigit(util.ToRune(line, 1))) { node := gast.NewString(s.Substitutions[RightSingleQuote]) node.SetCode(true) block.Advance(1) @@ -276,7 +283,8 @@ func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser } if s.Substitutions[RightSingleQuote] != nil && counter.Single > 0 { isClose := d.CanClose && !d.CanOpen - maybeClose := d.CanClose && d.CanOpen && len(line) > 1 && unicode.IsPunct(util.ToRune(line, 1)) && (len(line) == 2 || (len(line) > 2 && util.IsPunct(line[2]) || util.IsSpace(line[2]))) + maybeClose := d.CanClose && d.CanOpen && len(line) > 1 && unicode.IsPunct(util.ToRune(line, 1)) && + (len(line) == 2 || (len(line) > 2 && util.IsPunct(line[2]) || util.IsSpace(line[2]))) if isClose || maybeClose { node := gast.NewString(s.Substitutions[RightSingleQuote]) node.SetCode(true) @@ -296,7 +304,8 @@ func (s *typographerParser) Parse(parent gast.Node, block text.Reader, pc parser } if s.Substitutions[RightDoubleQuote] != nil && counter.Double > 0 { isClose := d.CanClose && !d.CanOpen - maybeClose := d.CanClose && d.CanOpen && len(line) > 1 && (unicode.IsPunct(util.ToRune(line, 1))) && (len(line) == 2 || (len(line) > 2 && util.IsPunct(line[2]) || util.IsSpace(line[2]))) + maybeClose := d.CanClose && d.CanOpen && len(line) > 1 && (unicode.IsPunct(util.ToRune(line, 1))) && + (len(line) == 2 || (len(line) > 2 && util.IsPunct(line[2]) || util.IsSpace(line[2]))) if isClose || maybeClose { // special case: "Monitor 21"" if len(line) > 1 && line[1] == '"' && unicode.IsDigit(before) { |
