123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package org
-
- import "fmt"
-
- // Writer is the interface that is used to export a parsed document into a new format. See Document.Write().
- type Writer interface {
- Before(*Document) // Before is called before any nodes are passed to the writer.
- After(*Document) // After is called after all nodes have been passed to the writer.
- String() string // String is called at the very end to retrieve the final output.
-
- WriterWithExtensions() Writer
- WriteNodesAsString(...Node) string
-
- WriteKeyword(Keyword)
- WriteInclude(Include)
- WriteComment(Comment)
- WriteNodeWithMeta(NodeWithMeta)
- WriteNodeWithName(NodeWithName)
- WriteHeadline(Headline)
- WriteBlock(Block)
- WriteExample(Example)
- WriteDrawer(Drawer)
- WritePropertyDrawer(PropertyDrawer)
- WriteList(List)
- WriteListItem(ListItem)
- WriteDescriptiveListItem(DescriptiveListItem)
- WriteTable(Table)
- WriteHorizontalRule(HorizontalRule)
- WriteParagraph(Paragraph)
- WriteText(Text)
- WriteEmphasis(Emphasis)
- WriteLatexFragment(LatexFragment)
- WriteStatisticToken(StatisticToken)
- WriteExplicitLineBreak(ExplicitLineBreak)
- WriteLineBreak(LineBreak)
- WriteRegularLink(RegularLink)
- WriteTimestamp(Timestamp)
- WriteFootnoteLink(FootnoteLink)
- WriteFootnoteDefinition(FootnoteDefinition)
- }
-
- func WriteNodes(w Writer, nodes ...Node) {
- w = w.WriterWithExtensions()
- for _, n := range nodes {
- switch n := n.(type) {
- case Keyword:
- w.WriteKeyword(n)
- case Include:
- w.WriteInclude(n)
- case Comment:
- w.WriteComment(n)
- case NodeWithMeta:
- w.WriteNodeWithMeta(n)
- case NodeWithName:
- w.WriteNodeWithName(n)
- case Headline:
- w.WriteHeadline(n)
- case Block:
- w.WriteBlock(n)
- case Example:
- w.WriteExample(n)
- case Drawer:
- w.WriteDrawer(n)
- case PropertyDrawer:
- w.WritePropertyDrawer(n)
- case List:
- w.WriteList(n)
- case ListItem:
- w.WriteListItem(n)
- case DescriptiveListItem:
- w.WriteDescriptiveListItem(n)
- case Table:
- w.WriteTable(n)
- case HorizontalRule:
- w.WriteHorizontalRule(n)
- case Paragraph:
- w.WriteParagraph(n)
- case Text:
- w.WriteText(n)
- case Emphasis:
- w.WriteEmphasis(n)
- case LatexFragment:
- w.WriteLatexFragment(n)
- case StatisticToken:
- w.WriteStatisticToken(n)
- case ExplicitLineBreak:
- w.WriteExplicitLineBreak(n)
- case LineBreak:
- w.WriteLineBreak(n)
- case RegularLink:
- w.WriteRegularLink(n)
- case Timestamp:
- w.WriteTimestamp(n)
- case FootnoteLink:
- w.WriteFootnoteLink(n)
- case FootnoteDefinition:
- w.WriteFootnoteDefinition(n)
- default:
- if n != nil {
- panic(fmt.Sprintf("bad node %T %#v", n, n))
- }
- }
- }
- }
|