diff options
author | Lauris BH <lauris@nix.lv> | 2019-11-05 10:39:03 +0200 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2019-11-05 16:39:03 +0800 |
commit | 05e7715c4b2af174aefc56fe459e5c08a96a3017 (patch) | |
tree | cb8ef6aa941d48a407d2bdbe2b0ba2df842e2148 /vendor/github.com | |
parent | 2f4ef84cbfe1f7913434f531e8d61d232238b58a (diff) | |
download | gitea-05e7715c4b2af174aefc56fe459e5c08a96a3017.tar.gz gitea-05e7715c4b2af174aefc56fe459e5c08a96a3017.zip |
Update go-org to optimize code (#8824)
Diffstat (limited to 'vendor/github.com')
13 files changed, 81 insertions, 88 deletions
diff --git a/vendor/github.com/niklasfasching/go-org/org/block.go b/vendor/github.com/niklasfasching/go-org/org/block.go index 0e7a526243..78ad9a7915 100644 --- a/vendor/github.com/niklasfasching/go-org/org/block.go +++ b/vendor/github.com/niklasfasching/go-org/org/block.go @@ -80,5 +80,5 @@ func trimIndentUpTo(max int) func(string) string { } } -func (n Example) String() string { return orgWriter.nodesAsString(n) } -func (n Block) String() string { return orgWriter.nodesAsString(n) } +func (n Example) String() string { return orgWriter.WriteNodesAsString(n) } +func (n Block) String() string { return orgWriter.WriteNodesAsString(n) } diff --git a/vendor/github.com/niklasfasching/go-org/org/document.go b/vendor/github.com/niklasfasching/go-org/org/document.go index e43eb626db..a9697c465d 100644 --- a/vendor/github.com/niklasfasching/go-org/org/document.go +++ b/vendor/github.com/niklasfasching/go-org/org/document.go @@ -90,7 +90,7 @@ func New() *Configuration { } // String returns the pretty printed Org mode string for the given nodes (see OrgWriter). -func String(nodes []Node) string { return orgWriter.nodesAsString(nodes...) } +func String(nodes []Node) string { return orgWriter.WriteNodesAsString(nodes...) } // Write is called after with an instance of the Writer interface to export a parsed Document into another format. func (d *Document) Write(w Writer) (out string, err error) { diff --git a/vendor/github.com/niklasfasching/go-org/org/drawer.go b/vendor/github.com/niklasfasching/go-org/org/drawer.go index 8bb9974380..eee590d8c4 100644 --- a/vendor/github.com/niklasfasching/go-org/org/drawer.go +++ b/vendor/github.com/niklasfasching/go-org/org/drawer.go @@ -93,5 +93,5 @@ func (d *PropertyDrawer) Get(key string) (string, bool) { return "", false } -func (n Drawer) String() string { return orgWriter.nodesAsString(n) } -func (n PropertyDrawer) String() string { return orgWriter.nodesAsString(n) } +func (n Drawer) String() string { return orgWriter.WriteNodesAsString(n) } +func (n PropertyDrawer) String() string { return orgWriter.WriteNodesAsString(n) } diff --git a/vendor/github.com/niklasfasching/go-org/org/footnote.go b/vendor/github.com/niklasfasching/go-org/org/footnote.go index 660e244386..e8604211e0 100644 --- a/vendor/github.com/niklasfasching/go-org/org/footnote.go +++ b/vendor/github.com/niklasfasching/go-org/org/footnote.go @@ -32,4 +32,4 @@ func (d *Document) parseFootnoteDefinition(i int, parentStop stopFn) (int, Node) return consumed, definition } -func (n FootnoteDefinition) String() string { return orgWriter.nodesAsString(n) } +func (n FootnoteDefinition) String() string { return orgWriter.WriteNodesAsString(n) } diff --git a/vendor/github.com/niklasfasching/go-org/org/headline.go b/vendor/github.com/niklasfasching/go-org/org/headline.go index 23b986fbc8..749d1ff005 100644 --- a/vendor/github.com/niklasfasching/go-org/org/headline.go +++ b/vendor/github.com/niklasfasching/go-org/org/headline.go @@ -98,4 +98,4 @@ func (parent *Section) add(current *Section) { } } -func (n Headline) String() string { return orgWriter.nodesAsString(n) } +func (n Headline) String() string { return orgWriter.WriteNodesAsString(n) } diff --git a/vendor/github.com/niklasfasching/go-org/org/html_writer.go b/vendor/github.com/niklasfasching/go-org/org/html_writer.go index 90a48c6b4b..916618c450 100644 --- a/vendor/github.com/niklasfasching/go-org/org/html_writer.go +++ b/vendor/github.com/niklasfasching/go-org/org/html_writer.go @@ -69,16 +69,13 @@ func NewHTMLWriter() *HTMLWriter { } } -func (w *HTMLWriter) emptyClone() *HTMLWriter { - wcopy := *w - wcopy.Builder = strings.Builder{} - return &wcopy -} - -func (w *HTMLWriter) nodesAsString(nodes ...Node) string { - tmp := w.emptyClone() - WriteNodes(tmp, nodes...) - return tmp.String() +func (w *HTMLWriter) WriteNodesAsString(nodes ...Node) string { + original := w.Builder + w.Builder = strings.Builder{} + WriteNodes(w, nodes...) + out := w.String() + w.Builder = original + return out } func (w *HTMLWriter) WriterWithExtensions() Writer { @@ -104,12 +101,14 @@ func (w *HTMLWriter) WritePropertyDrawer(PropertyDrawer) {} func (w *HTMLWriter) WriteBlock(b Block) { content := "" if isRawTextBlock(b.Name) { - exportWriter := w.emptyClone() - exportWriter.htmlEscape = false - WriteNodes(exportWriter, b.Children...) - content = strings.TrimRightFunc(exportWriter.String(), unicode.IsSpace) + builder, htmlEscape := w.Builder, w.htmlEscape + w.Builder, w.htmlEscape = strings.Builder{}, false + WriteNodes(w, b.Children...) + out := w.String() + w.Builder, w.htmlEscape = builder, htmlEscape + content = strings.TrimRightFunc(out, unicode.IsSpace) } else { - content = w.nodesAsString(b.Children...) + content = w.WriteNodesAsString(b.Children...) } switch name := b.Name; { case name == "SRC": @@ -194,7 +193,7 @@ func (w *HTMLWriter) writeSection(section *Section) { // NOTE: To satisfy hugo ExtractTOC() check we cannot use `<li>\n` here. Doesn't really matter, just a note. w.WriteString("<li>") h := section.Headline - title := cleanHeadlineTitleForHTMLAnchorRegexp.ReplaceAllString(w.nodesAsString(h.Title...), "") + title := cleanHeadlineTitleForHTMLAnchorRegexp.ReplaceAllString(w.WriteNodesAsString(h.Title...), "") w.WriteString(fmt.Sprintf("<a href=\"#%s\">%s</a>\n", h.ID(), title)) if len(section.Children) != 0 { w.WriteString("<ul>\n") @@ -306,7 +305,7 @@ func (w *HTMLWriter) WriteRegularLink(l RegularLink) { } description := url if l.Description != nil { - description = w.nodesAsString(l.Description...) + description = w.WriteNodesAsString(l.Description...) } switch l.Kind() { case "image": @@ -384,10 +383,10 @@ func (w *HTMLWriter) WriteHorizontalRule(h HorizontalRule) { } func (w *HTMLWriter) WriteNodeWithMeta(n NodeWithMeta) { - out := w.nodesAsString(n.Node) + out := w.WriteNodesAsString(n.Node) if p, ok := n.Node.(Paragraph); ok { if len(p.Children) == 1 && isImageOrVideoLink(p.Children[0]) { - out = w.nodesAsString(p.Children[0]) + out = w.WriteNodesAsString(p.Children[0]) } } for _, attributes := range n.Meta.HTMLAttributes { @@ -399,7 +398,7 @@ func (w *HTMLWriter) WriteNodeWithMeta(n NodeWithMeta) { if i != 0 { caption += " " } - caption += w.nodesAsString(ns...) + caption += w.WriteNodesAsString(ns...) } out = fmt.Sprintf("<figure>\n%s<figcaption>\n%s\n</figcaption>\n</figure>\n", out, caption) } diff --git a/vendor/github.com/niklasfasching/go-org/org/inline.go b/vendor/github.com/niklasfasching/go-org/org/inline.go index 02d5a15341..c33701d6bf 100644 --- a/vendor/github.com/niklasfasching/go-org/org/inline.go +++ b/vendor/github.com/niklasfasching/go-org/org/inline.go @@ -147,8 +147,8 @@ func (d *Document) parseExplicitLineBreakOrLatexFragment(input string, start int switch { case start+2 >= len(input): case input[start+1] == '\\' && start != 0 && input[start-1] != '\n': - for i := start + 2; unicode.IsSpace(rune(input[i])); i++ { - if i >= len(input) || input[i] == '\n' { + for i := start + 2; i <= len(input)-1 && unicode.IsSpace(rune(input[i])); i++ { + if input[i] == '\n' { return i + 1 - start, ExplicitLineBreak{} } } @@ -346,12 +346,12 @@ func (l RegularLink) Kind() string { return "regular" } -func (n Text) String() string { return orgWriter.nodesAsString(n) } -func (n LineBreak) String() string { return orgWriter.nodesAsString(n) } -func (n ExplicitLineBreak) String() string { return orgWriter.nodesAsString(n) } -func (n StatisticToken) String() string { return orgWriter.nodesAsString(n) } -func (n Emphasis) String() string { return orgWriter.nodesAsString(n) } -func (n LatexFragment) String() string { return orgWriter.nodesAsString(n) } -func (n FootnoteLink) String() string { return orgWriter.nodesAsString(n) } -func (n RegularLink) String() string { return orgWriter.nodesAsString(n) } -func (n Timestamp) String() string { return orgWriter.nodesAsString(n) } +func (n Text) String() string { return orgWriter.WriteNodesAsString(n) } +func (n LineBreak) String() string { return orgWriter.WriteNodesAsString(n) } +func (n ExplicitLineBreak) String() string { return orgWriter.WriteNodesAsString(n) } +func (n StatisticToken) String() string { return orgWriter.WriteNodesAsString(n) } +func (n Emphasis) String() string { return orgWriter.WriteNodesAsString(n) } +func (n LatexFragment) String() string { return orgWriter.WriteNodesAsString(n) } +func (n FootnoteLink) String() string { return orgWriter.WriteNodesAsString(n) } +func (n RegularLink) String() string { return orgWriter.WriteNodesAsString(n) } +func (n Timestamp) String() string { return orgWriter.WriteNodesAsString(n) } diff --git a/vendor/github.com/niklasfasching/go-org/org/keyword.go b/vendor/github.com/niklasfasching/go-org/org/keyword.go index 776241797b..3ab8804260 100644 --- a/vendor/github.com/niklasfasching/go-org/org/keyword.go +++ b/vendor/github.com/niklasfasching/go-org/org/keyword.go @@ -177,8 +177,8 @@ func (d *Document) loadSetupFile(k Keyword) (int, Node) { return 1, k } -func (n Comment) String() string { return orgWriter.nodesAsString(n) } -func (n Keyword) String() string { return orgWriter.nodesAsString(n) } -func (n NodeWithMeta) String() string { return orgWriter.nodesAsString(n) } -func (n NodeWithName) String() string { return orgWriter.nodesAsString(n) } -func (n Include) String() string { return orgWriter.nodesAsString(n) } +func (n Comment) String() string { return orgWriter.WriteNodesAsString(n) } +func (n Keyword) String() string { return orgWriter.WriteNodesAsString(n) } +func (n NodeWithMeta) String() string { return orgWriter.WriteNodesAsString(n) } +func (n NodeWithName) String() string { return orgWriter.WriteNodesAsString(n) } +func (n Include) String() string { return orgWriter.WriteNodesAsString(n) } diff --git a/vendor/github.com/niklasfasching/go-org/org/list.go b/vendor/github.com/niklasfasching/go-org/org/list.go index 6ba28f6fe4..462e9fa75b 100644 --- a/vendor/github.com/niklasfasching/go-org/org/list.go +++ b/vendor/github.com/niklasfasching/go-org/org/list.go @@ -109,6 +109,6 @@ func (d *Document) parseListItem(l List, i int, parentStop stopFn) (int, Node) { return i - start, ListItem{bullet, status, nodes} } -func (n List) String() string { return orgWriter.nodesAsString(n) } -func (n ListItem) String() string { return orgWriter.nodesAsString(n) } -func (n DescriptiveListItem) String() string { return orgWriter.nodesAsString(n) } +func (n List) String() string { return orgWriter.WriteNodesAsString(n) } +func (n ListItem) String() string { return orgWriter.WriteNodesAsString(n) } +func (n DescriptiveListItem) String() string { return orgWriter.WriteNodesAsString(n) } diff --git a/vendor/github.com/niklasfasching/go-org/org/org_writer.go b/vendor/github.com/niklasfasching/go-org/org/org_writer.go index d574cda527..8855df9018 100644 --- a/vendor/github.com/niklasfasching/go-org/org/org_writer.go +++ b/vendor/github.com/niklasfasching/go-org/org/org_writer.go @@ -43,39 +43,33 @@ func (w *OrgWriter) WriterWithExtensions() Writer { func (w *OrgWriter) Before(d *Document) {} func (w *OrgWriter) After(d *Document) {} -func (w *OrgWriter) emptyClone() *OrgWriter { - wcopy := *w - wcopy.Builder = strings.Builder{} - return &wcopy -} - -func (w *OrgWriter) nodesAsString(nodes ...Node) string { - tmp := w.emptyClone() - WriteNodes(tmp, nodes...) - return tmp.String() +func (w *OrgWriter) WriteNodesAsString(nodes ...Node) string { + builder := w.Builder + w.Builder = strings.Builder{} + WriteNodes(w, nodes...) + out := w.String() + w.Builder = builder + return out } func (w *OrgWriter) WriteHeadline(h Headline) { - tmp := w.emptyClone() - tmp.WriteString(strings.Repeat("*", h.Lvl)) + start := w.Len() + w.WriteString(strings.Repeat("*", h.Lvl)) if h.Status != "" { - tmp.WriteString(" " + h.Status) + w.WriteString(" " + h.Status) } if h.Priority != "" { - tmp.WriteString(" [#" + h.Priority + "]") + w.WriteString(" [#" + h.Priority + "]") } - tmp.WriteString(" ") - WriteNodes(tmp, h.Title...) - hString := tmp.String() + w.WriteString(" ") + WriteNodes(w, h.Title...) if len(h.Tags) != 0 { tString := ":" + strings.Join(h.Tags, ":") + ":" - if n := w.TagsColumn - len(tString) - len(hString); n > 0 { - w.WriteString(hString + strings.Repeat(" ", n) + tString) + if n := w.TagsColumn - len(tString) - (w.Len() - start); n > 0 { + w.WriteString(strings.Repeat(" ", n) + tString) } else { - w.WriteString(hString + " " + tString) + w.WriteString(" " + tString) } - } else { - w.WriteString(hString) } w.WriteString("\n") if len(h.Children) != 0 { @@ -123,7 +117,7 @@ func (w *OrgWriter) WritePropertyDrawer(d PropertyDrawer) { func (w *OrgWriter) WriteFootnoteDefinition(f FootnoteDefinition) { w.WriteString(fmt.Sprintf("[fn:%s]", f.Name)) - content := w.nodesAsString(f.Children...) + content := w.WriteNodesAsString(f.Children...) if content != "" && !unicode.IsSpace(rune(content[0])) { w.WriteString(" ") } @@ -131,7 +125,7 @@ func (w *OrgWriter) WriteFootnoteDefinition(f FootnoteDefinition) { } func (w *OrgWriter) WriteParagraph(p Paragraph) { - content := w.nodesAsString(p.Children...) + content := w.WriteNodesAsString(p.Children...) if len(content) > 0 && content[0] != '\n' { w.WriteString(w.indent) } @@ -141,7 +135,7 @@ func (w *OrgWriter) WriteParagraph(p Paragraph) { func (w *OrgWriter) WriteExample(e Example) { for _, n := range e.Children { w.WriteString(w.indent + ":") - if content := w.nodesAsString(n); content != "" { + if content := w.WriteNodesAsString(n); content != "" { w.WriteString(" " + content) } w.WriteString("\n") @@ -185,10 +179,11 @@ func (w *OrgWriter) WriteComment(c Comment) { func (w *OrgWriter) WriteList(l List) { WriteNodes(w, l.Items...) } func (w *OrgWriter) WriteListItem(li ListItem) { - liWriter := w.emptyClone() - liWriter.indent = w.indent + strings.Repeat(" ", len(li.Bullet)+1) - WriteNodes(liWriter, li.Children...) - content := strings.TrimPrefix(liWriter.String(), liWriter.indent) + originalBuilder, originalIndent := w.Builder, w.indent + w.Builder, w.indent = strings.Builder{}, w.indent+strings.Repeat(" ", len(li.Bullet)+1) + WriteNodes(w, li.Children...) + content := strings.TrimPrefix(w.String(), w.indent) + w.Builder, w.indent = originalBuilder, originalIndent w.WriteString(w.indent + li.Bullet) if li.Status != "" { w.WriteString(fmt.Sprintf(" [%s]", li.Status)) @@ -207,14 +202,15 @@ func (w *OrgWriter) WriteDescriptiveListItem(di DescriptiveListItem) { } indent := w.indent + strings.Repeat(" ", len(di.Bullet)+1) if len(di.Term) != 0 { - term := w.nodesAsString(di.Term...) + term := w.WriteNodesAsString(di.Term...) w.WriteString(" " + term + " ::") indent = indent + strings.Repeat(" ", len(term)+4) } - diWriter := w.emptyClone() - diWriter.indent = indent - WriteNodes(diWriter, di.Details...) - details := strings.TrimPrefix(diWriter.String(), diWriter.indent) + originalBuilder, originalIndent := w.Builder, w.indent + w.Builder, w.indent = strings.Builder{}, indent + WriteNodes(w, di.Details...) + details := strings.TrimPrefix(w.String(), w.indent) + w.Builder, w.indent = originalBuilder, originalIndent if len(details) > 0 && details[0] == '\n' { w.WriteString(details) } else { @@ -239,7 +235,7 @@ func (w *OrgWriter) WriteTable(t Table) { w.WriteString(`|`) for _, column := range row.Columns { w.WriteString(` `) - content := w.nodesAsString(column.Children...) + content := w.WriteNodesAsString(column.Children...) if content == "" { content = " " } @@ -326,9 +322,6 @@ func (w *OrgWriter) WriteRegularLink(l RegularLink) { } else if l.Description == nil { w.WriteString(fmt.Sprintf("[[%s]]", l.URL)) } else { - descriptionWriter := w.emptyClone() - WriteNodes(descriptionWriter, l.Description...) - description := descriptionWriter.String() - w.WriteString(fmt.Sprintf("[[%s][%s]]", l.URL, description)) + w.WriteString(fmt.Sprintf("[[%s][%s]]", l.URL, w.WriteNodesAsString(l.Description...))) } } diff --git a/vendor/github.com/niklasfasching/go-org/org/paragraph.go b/vendor/github.com/niklasfasching/go-org/org/paragraph.go index b7d3ea92ce..24f0554600 100644 --- a/vendor/github.com/niklasfasching/go-org/org/paragraph.go +++ b/vendor/github.com/niklasfasching/go-org/org/paragraph.go @@ -42,5 +42,5 @@ func (d *Document) parseHorizontalRule(i int, parentStop stopFn) (int, Node) { return 1, HorizontalRule{} } -func (n Paragraph) String() string { return orgWriter.nodesAsString(n) } -func (n HorizontalRule) String() string { return orgWriter.nodesAsString(n) } +func (n Paragraph) String() string { return orgWriter.WriteNodesAsString(n) } +func (n HorizontalRule) String() string { return orgWriter.WriteNodesAsString(n) } diff --git a/vendor/github.com/niklasfasching/go-org/org/table.go b/vendor/github.com/niklasfasching/go-org/org/table.go index a404e1a9f2..395588a769 100644 --- a/vendor/github.com/niklasfasching/go-org/org/table.go +++ b/vendor/github.com/niklasfasching/go-org/org/table.go @@ -127,4 +127,4 @@ func isSpecialRow(rawColumns []string) bool { return isAlignRow } -func (n Table) String() string { return orgWriter.nodesAsString(n) } +func (n Table) String() string { return orgWriter.WriteNodesAsString(n) } diff --git a/vendor/github.com/niklasfasching/go-org/org/writer.go b/vendor/github.com/niklasfasching/go-org/org/writer.go index c4aebd69f5..189d72e800 100644 --- a/vendor/github.com/niklasfasching/go-org/org/writer.go +++ b/vendor/github.com/niklasfasching/go-org/org/writer.go @@ -9,6 +9,7 @@ type Writer interface { String() string // String is called at the very end to retrieve the final output. WriterWithExtensions() Writer + WriteNodesAsString(...Node) string WriteKeyword(Keyword) WriteInclude(Include) |