forked from gitea/gitea
Update go-org to optimize code (#8824)
This commit is contained in:
parent
2f4ef84cbf
commit
05e7715c4b
4
go.mod
4
go.mod
|
@ -72,7 +72,7 @@ require (
|
|||
github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae // indirect
|
||||
github.com/msteinert/pam v0.0.0-20151204160544-02ccfbfaf0cc
|
||||
github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5
|
||||
github.com/niklasfasching/go-org v0.1.7
|
||||
github.com/niklasfasching/go-org v0.1.8
|
||||
github.com/oliamb/cutter v0.2.2
|
||||
github.com/philhofer/fwd v1.0.0 // indirect
|
||||
github.com/pkg/errors v0.8.1
|
||||
|
@ -101,7 +101,7 @@ require (
|
|||
github.com/willf/bitset v0.0.0-20180426185212-8ce1146b8621 // indirect
|
||||
github.com/yohcop/openid-go v0.0.0-20160914080427-2c050d2dae53
|
||||
golang.org/x/crypto v0.0.0-20190927123631-a832865fa7ad
|
||||
golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271
|
||||
golang.org/x/net v0.0.0-20191101175033-0deb6923b6d9
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
|
||||
golang.org/x/sys v0.0.0-20190910064555-bbd175535a8b
|
||||
golang.org/x/text v0.3.2
|
||||
|
|
4
go.sum
4
go.sum
|
@ -427,6 +427,8 @@ github.com/niklasfasching/go-org v0.1.6 h1:F521WcqRNl8OJumlgAnekZgERaTA2HpfOYYfV
|
|||
github.com/niklasfasching/go-org v0.1.6/go.mod h1:AsLD6X7djzRIz4/RFZu8vwRL0VGjUvGZCCH1Nz0VdrU=
|
||||
github.com/niklasfasching/go-org v0.1.7 h1:t3V+3XnS/7BhKv/7SlMUa8FvAiq577/a1T3D7mLIRXE=
|
||||
github.com/niklasfasching/go-org v0.1.7/go.mod h1:AsLD6X7djzRIz4/RFZu8vwRL0VGjUvGZCCH1Nz0VdrU=
|
||||
github.com/niklasfasching/go-org v0.1.8 h1:Kjvs6lP+LIILHhc9zIJ4Gu90a/pVY483if2Qmu8v4Fg=
|
||||
github.com/niklasfasching/go-org v0.1.8/go.mod h1:AsLD6X7djzRIz4/RFZu8vwRL0VGjUvGZCCH1Nz0VdrU=
|
||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||
github.com/oliamb/cutter v0.2.2 h1:Lfwkya0HHNU1YLnGv2hTkzHfasrSMkgv4Dn+5rmlk3k=
|
||||
github.com/oliamb/cutter v0.2.2/go.mod h1:4BenG2/4GuRBDbVm/OPahDVqbrOemzpPiG5mi1iryBU=
|
||||
|
@ -658,6 +660,8 @@ golang.org/x/net v0.0.0-20190909003024-a7b16738d86b h1:XfVGCX+0T4WOStkaOsJRllbsi
|
|||
golang.org/x/net v0.0.0-20190909003024-a7b16738d86b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271 h1:N66aaryRB3Ax92gH0v3hp1QYZ3zWWCCUR/j8Ifh45Ss=
|
||||
golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20191101175033-0deb6923b6d9 h1:DPz9iiH3YoKiKhX/ijjoZvT0VFwK2c6CWYWQ7Zyr8TU=
|
||||
golang.org/x/net v0.0.0-20191101175033-0deb6923b6d9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/oauth2 v0.0.0-20180620175406-ef147856a6dd/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421 h1:Wo7BWFiOk0QRFMLYMqJGFMd9CgUAcGx7V+qEg/h5IBI=
|
||||
|
|
|
@ -8,7 +8,6 @@ import (
|
|||
"bytes"
|
||||
"fmt"
|
||||
"html"
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/markup"
|
||||
|
@ -91,7 +90,7 @@ func (r *Renderer) WriteRegularLink(l org.RegularLink) {
|
|||
|
||||
description := string(link)
|
||||
if l.Description != nil {
|
||||
description = r.nodesAsString(l.Description...)
|
||||
description = r.WriteNodesAsString(l.Description...)
|
||||
}
|
||||
switch l.Kind() {
|
||||
case "image":
|
||||
|
@ -102,21 +101,3 @@ func (r *Renderer) WriteRegularLink(l org.RegularLink) {
|
|||
r.WriteString(fmt.Sprintf(`<a href="%s" title="%s">%s</a>`, link, description, description))
|
||||
}
|
||||
}
|
||||
|
||||
func (r *Renderer) emptyClone() *Renderer {
|
||||
wcopy := *(r.HTMLWriter)
|
||||
wcopy.Builder = strings.Builder{}
|
||||
|
||||
rcopy := *r
|
||||
rcopy.HTMLWriter = &wcopy
|
||||
|
||||
wcopy.ExtendingWriter = &rcopy
|
||||
|
||||
return &rcopy
|
||||
}
|
||||
|
||||
func (r *Renderer) nodesAsString(nodes ...org.Node) string {
|
||||
tmp := r.emptyClone()
|
||||
org.WriteNodes(tmp, nodes...)
|
||||
return tmp.String()
|
||||
}
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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...)))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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) }
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
|
||||
|
||||
// +build go1.13
|
||||
// +build go1.13,!go1.14
|
||||
|
||||
package idna
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -330,7 +330,7 @@ github.com/mschoch/smat
|
|||
github.com/msteinert/pam
|
||||
# github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5
|
||||
github.com/nfnt/resize
|
||||
# github.com/niklasfasching/go-org v0.1.7
|
||||
# github.com/niklasfasching/go-org v0.1.8
|
||||
github.com/niklasfasching/go-org/org
|
||||
# github.com/oliamb/cutter v0.2.2
|
||||
github.com/oliamb/cutter
|
||||
|
@ -464,7 +464,7 @@ golang.org/x/crypto/scrypt
|
|||
golang.org/x/crypto/ssh
|
||||
golang.org/x/crypto/ssh/agent
|
||||
golang.org/x/crypto/ssh/knownhosts
|
||||
# golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271
|
||||
# golang.org/x/net v0.0.0-20191101175033-0deb6923b6d9
|
||||
golang.org/x/net/context
|
||||
golang.org/x/net/context/ctxhttp
|
||||
golang.org/x/net/html
|
||||
|
|
Loading…
Reference in New Issue