From 348f697b41515bde4cac8e0481342adb53a3c598 Mon Sep 17 00:00:00 2001 From: Niklas Fasching Date: Tue, 1 Jan 2019 19:08:17 +0100 Subject: [PATCH] Make Writer interface methods public: Allow other implementations --- org/document.go | 12 ++++++------ org/html_writer.go | 36 ++++++++++++++++++------------------ org/org_writer.go | 34 +++++++++++++++++----------------- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/org/document.go b/org/document.go index e3a7b81..d27912e 100644 --- a/org/document.go +++ b/org/document.go @@ -25,9 +25,9 @@ type Document struct { } type Writer interface { - before(*Document) - after(*Document) - writeNodes(...Node) + Before(*Document) + After(*Document) + WriteNodes(...Node) String() string } @@ -101,9 +101,9 @@ func (d *Document) Write(w Writer) (out string, err error) { } else if d.Nodes == nil { return "", fmt.Errorf("could not write output: parse was not called") } - w.before(d) - w.writeNodes(d.Nodes...) - w.after(d) + w.Before(d) + w.WriteNodes(d.Nodes...) + w.After(d) return w.String(), err } diff --git a/org/html_writer.go b/org/html_writer.go index 09e7ff6..040bb68 100644 --- a/org/html_writer.go +++ b/org/html_writer.go @@ -62,21 +62,21 @@ func (w *HTMLWriter) emptyClone() *HTMLWriter { func (w *HTMLWriter) nodesAsString(nodes ...Node) string { tmp := w.emptyClone() - tmp.writeNodes(nodes...) + tmp.WriteNodes(nodes...) return tmp.String() } -func (w *HTMLWriter) before(d *Document) { +func (w *HTMLWriter) Before(d *Document) { w.document = d w.log = d.Log w.writeOutline(d) } -func (w *HTMLWriter) after(d *Document) { +func (w *HTMLWriter) After(d *Document) { w.writeFootnotes(d) } -func (w *HTMLWriter) writeNodes(ns ...Node) { +func (w *HTMLWriter) WriteNodes(ns ...Node) { for _, n := range ns { switch n := n.(type) { case Keyword: @@ -142,7 +142,7 @@ func (w *HTMLWriter) writeBlock(b Block) { if isRawTextBlock(b.Name) { exportWriter := w.emptyClone() exportWriter.htmlEscape = false - exportWriter.writeNodes(b.Children...) + exportWriter.WriteNodes(b.Children...) content = strings.TrimRightFunc(exportWriter.String(), unicode.IsSpace) } else { content = w.nodesAsString(b.Children...) @@ -170,7 +170,7 @@ func (w *HTMLWriter) writeBlock(b Block) { } func (w *HTMLWriter) writeDrawer(d Drawer) { - w.writeNodes(d.Children...) + w.WriteNodes(d.Children...) } func (w *HTMLWriter) writeKeyword(k Keyword) { @@ -180,7 +180,7 @@ func (w *HTMLWriter) writeKeyword(k Keyword) { } func (w *HTMLWriter) writeInclude(i Include) { - w.writeNodes(i.Resolve()) + w.WriteNodes(i.Resolve()) } func (w *HTMLWriter) writeFootnoteDefinition(f FootnoteDefinition) { @@ -188,7 +188,7 @@ func (w *HTMLWriter) writeFootnoteDefinition(f FootnoteDefinition) { w.WriteString(`
` + "\n") w.WriteString(fmt.Sprintf(`%s`, n, n, n) + "\n") w.WriteString(`
` + "\n") - w.writeNodes(f.Children...) + w.WriteNodes(f.Children...) w.WriteString("
\n
\n") } @@ -248,7 +248,7 @@ func (w *HTMLWriter) writeHeadline(h Headline) { w.WriteString(fmt.Sprintf(`[%s]`, h.Priority) + "\n") } - w.writeNodes(h.Title...) + w.WriteNodes(h.Title...) if w.document.GetOption("tags") && len(h.Tags) != 0 { tags := make([]string, len(h.Tags)) for i, tag := range h.Tags { @@ -258,7 +258,7 @@ func (w *HTMLWriter) writeHeadline(h Headline) { w.WriteString(fmt.Sprintf(`%s`, strings.Join(tags, " "))) } w.WriteString(fmt.Sprintf("\n\n", h.Lvl)) - w.writeNodes(h.Children...) + w.WriteNodes(h.Children...) } func (w *HTMLWriter) writeText(t Text) { @@ -277,7 +277,7 @@ func (w *HTMLWriter) writeEmphasis(e Emphasis) { panic(fmt.Sprintf("bad emphasis %#v", e)) } w.WriteString(tags[0]) - w.writeNodes(e.Content...) + w.WriteNodes(e.Content...) w.WriteString(tags[1]) } @@ -326,7 +326,7 @@ func (w *HTMLWriter) writeList(l List) { panic(fmt.Sprintf("bad list kind %#v", l)) } w.WriteString(tags[0] + "\n") - w.writeNodes(l.Items...) + w.WriteNodes(l.Items...) w.WriteString(tags[1] + "\n") } @@ -336,7 +336,7 @@ func (w *HTMLWriter) writeListItem(li ListItem) { } else { w.WriteString("
  • \n") } - w.writeNodes(li.Children...) + w.WriteNodes(li.Children...) w.WriteString("
  • \n") } @@ -348,12 +348,12 @@ func (w *HTMLWriter) writeDescriptiveListItem(di DescriptiveListItem) { } if len(di.Term) != 0 { - w.writeNodes(di.Term...) + w.WriteNodes(di.Term...) } else { w.WriteString("?") } w.WriteString("
    \n") - w.writeNodes(di.Details...) + w.WriteNodes(di.Details...) w.WriteString("
    \n") } @@ -365,7 +365,7 @@ func (w *HTMLWriter) writeParagraph(p Paragraph) { if _, ok := p.Children[0].(LineBreak); !ok { w.WriteString("\n") } - w.writeNodes(p.Children...) + w.WriteNodes(p.Children...) w.WriteString("\n

    \n") } @@ -373,7 +373,7 @@ func (w *HTMLWriter) writeExample(e Example) { w.WriteString(`
    ` + "\n")
     	if len(e.Children) != 0 {
     		for _, n := range e.Children {
    -			w.writeNodes(n)
    +			w.WriteNodes(n)
     			w.WriteString("\n")
     		}
     	}
    @@ -438,7 +438,7 @@ func (w *HTMLWriter) writeTableColumns(columns []Column, tag string) {
     		} else {
     			w.WriteString(fmt.Sprintf(`<%s class="align-%s">`, tag, column.Align))
     		}
    -		w.writeNodes(column.Children...)
    +		w.WriteNodes(column.Children...)
     		w.WriteString(fmt.Sprintf("\n", tag))
     	}
     	w.WriteString("\n")
    diff --git a/org/org_writer.go b/org/org_writer.go
    index 7908831..44e6518 100644
    --- a/org/org_writer.go
    +++ b/org/org_writer.go
    @@ -32,8 +32,8 @@ func NewOrgWriter() *OrgWriter {
     	}
     }
     
    -func (w *OrgWriter) before(d *Document) {}
    -func (w *OrgWriter) after(d *Document)  {}
    +func (w *OrgWriter) Before(d *Document) {}
    +func (w *OrgWriter) After(d *Document)  {}
     
     func (w *OrgWriter) emptyClone() *OrgWriter {
     	wcopy := *w
    @@ -43,11 +43,11 @@ func (w *OrgWriter) emptyClone() *OrgWriter {
     
     func (w *OrgWriter) nodesAsString(nodes ...Node) string {
     	tmp := w.emptyClone()
    -	tmp.writeNodes(nodes...)
    +	tmp.WriteNodes(nodes...)
     	return tmp.String()
     }
     
    -func (w *OrgWriter) writeNodes(ns ...Node) {
    +func (w *OrgWriter) WriteNodes(ns ...Node) {
     	for _, n := range ns {
     		switch n := n.(type) {
     		case Comment:
    @@ -118,7 +118,7 @@ func (w *OrgWriter) writeHeadline(h Headline) {
     		tmp.WriteString(" [#" + h.Priority + "]")
     	}
     	tmp.WriteString(" ")
    -	tmp.writeNodes(h.Title...)
    +	tmp.WriteNodes(h.Title...)
     	hString := tmp.String()
     	if len(h.Tags) != 0 {
     		tString := ":" + strings.Join(h.Tags, ":") + ":"
    @@ -135,9 +135,9 @@ func (w *OrgWriter) writeHeadline(h Headline) {
     		w.WriteString(w.indent)
     	}
     	if h.Properties != nil {
    -		w.writeNodes(*h.Properties)
    +		w.WriteNodes(*h.Properties)
     	}
    -	w.writeNodes(h.Children...)
    +	w.WriteNodes(h.Children...)
     }
     
     func (w *OrgWriter) writeBlock(b Block) {
    @@ -149,7 +149,7 @@ func (w *OrgWriter) writeBlock(b Block) {
     	if isRawTextBlock(b.Name) {
     		w.WriteString(w.indent)
     	}
    -	w.writeNodes(b.Children...)
    +	w.WriteNodes(b.Children...)
     	if !isRawTextBlock(b.Name) {
     		w.WriteString(w.indent)
     	}
    @@ -158,7 +158,7 @@ func (w *OrgWriter) writeBlock(b Block) {
     
     func (w *OrgWriter) writeDrawer(d Drawer) {
     	w.WriteString(w.indent + ":" + d.Name + ":\n")
    -	w.writeNodes(d.Children...)
    +	w.WriteNodes(d.Children...)
     	w.WriteString(w.indent + ":END:\n")
     }
     
    @@ -212,26 +212,26 @@ func (w *OrgWriter) writeKeyword(k Keyword) {
     func (w *OrgWriter) writeNodeWithMeta(n NodeWithMeta) {
     	for _, ns := range n.Meta.Caption {
     		w.WriteString("#+CAPTION: ")
    -		w.writeNodes(ns...)
    +		w.WriteNodes(ns...)
     		w.WriteString("\n")
     	}
     	for _, attributes := range n.Meta.HTMLAttributes {
     		w.WriteString("#+ATTR_HTML: ")
     		w.WriteString(strings.Join(attributes, " ") + "\n")
     	}
    -	w.writeNodes(n.Node)
    +	w.WriteNodes(n.Node)
     }
     
     func (w *OrgWriter) writeComment(c Comment) {
     	w.WriteString(w.indent + "#" + c.Content + "\n")
     }
     
    -func (w *OrgWriter) writeList(l List) { w.writeNodes(l.Items...) }
    +func (w *OrgWriter) writeList(l List) { w.WriteNodes(l.Items...) }
     
     func (w *OrgWriter) writeListItem(li ListItem) {
     	liWriter := w.emptyClone()
     	liWriter.indent = w.indent + strings.Repeat(" ", len(li.Bullet)+1)
    -	liWriter.writeNodes(li.Children...)
    +	liWriter.WriteNodes(li.Children...)
     	content := strings.TrimPrefix(liWriter.String(), liWriter.indent)
     	w.WriteString(w.indent + li.Bullet)
     	if li.Status != "" {
    @@ -257,7 +257,7 @@ func (w *OrgWriter) writeDescriptiveListItem(di DescriptiveListItem) {
     	}
     	diWriter := w.emptyClone()
     	diWriter.indent = indent
    -	diWriter.writeNodes(di.Details...)
    +	diWriter.WriteNodes(di.Details...)
     	details := strings.TrimPrefix(diWriter.String(), diWriter.indent)
     	if len(details) > 0 && details[0] == '\n' {
     		w.WriteString(details)
    @@ -320,7 +320,7 @@ func (w *OrgWriter) writeEmphasis(e Emphasis) {
     		panic(fmt.Sprintf("bad emphasis %#v", e))
     	}
     	w.WriteString(borders[0])
    -	w.writeNodes(e.Content...)
    +	w.WriteNodes(e.Content...)
     	w.WriteString(borders[1])
     }
     
    @@ -340,7 +340,7 @@ func (w *OrgWriter) writeFootnoteLink(l FootnoteLink) {
     	w.WriteString("[fn:" + l.Name)
     	if l.Definition != nil {
     		w.WriteString(":")
    -		w.writeNodes(l.Definition.Children[0].(Paragraph).Children...)
    +		w.WriteNodes(l.Definition.Children[0].(Paragraph).Children...)
     	}
     	w.WriteString("]")
     }
    @@ -352,7 +352,7 @@ func (w *OrgWriter) writeRegularLink(l RegularLink) {
     		w.WriteString(fmt.Sprintf("[[%s]]", l.URL))
     	} else {
     		descriptionWriter := w.emptyClone()
    -		descriptionWriter.writeNodes(l.Description...)
    +		descriptionWriter.WriteNodes(l.Description...)
     		description := descriptionWriter.String()
     		w.WriteString(fmt.Sprintf("[[%s][%s]]", l.URL, description))
     	}