Documentation ¶
Overview ¶
Package org is an Org mode syntax processor.
It parses plain text into an AST and can export it as HTML or pretty printed Org mode syntax. Further export formats can be defined using the Writer interface.
You probably want to start with something like this:
input := strings.NewReader("Your Org mode input") html, err := org.New().Parse(input, "./").Write(org.NewHTMLWriter()) if err != nil { log.Fatalf("Something went wrong: %s", err) } log.Print(html)
Index ¶
- func IsNewLineChar(r rune) bool
- func ParseRanges(s string) [][2]int
- func String(nodes ...Node) string
- func WriteNodes(w Writer, nodes ...Node)
- type Block
- type Column
- type ColumnInfo
- type Comment
- type Configuration
- type DescriptiveListItem
- type Document
- type Drawer
- type Emphasis
- type Example
- type ExplicitLineBreak
- type FootnoteDefinition
- type FootnoteLink
- type HTMLWriter
- func (w *HTMLWriter) After(d *Document)
- func (w *HTMLWriter) Before(d *Document)
- func (w *HTMLWriter) WriteBlock(b Block)
- func (w *HTMLWriter) WriteComment(Comment)
- func (w *HTMLWriter) WriteDescriptiveListItem(di DescriptiveListItem)
- func (w *HTMLWriter) WriteDrawer(d Drawer)
- func (w *HTMLWriter) WriteEmphasis(e Emphasis)
- func (w *HTMLWriter) WriteExample(e Example)
- func (w *HTMLWriter) WriteExplicitLineBreak(l ExplicitLineBreak)
- func (w *HTMLWriter) WriteFootnoteDefinition(f FootnoteDefinition)
- func (w *HTMLWriter) WriteFootnoteLink(l FootnoteLink)
- func (w *HTMLWriter) WriteFootnotes(d *Document)
- func (w *HTMLWriter) WriteHeadline(h Headline)
- func (w *HTMLWriter) WriteHorizontalRule(h HorizontalRule)
- func (w *HTMLWriter) WriteInclude(i Include)
- func (w *HTMLWriter) WriteInlineBlock(b InlineBlock)
- func (w *HTMLWriter) WriteKeyword(k Keyword)
- func (w *HTMLWriter) WriteLatexBlock(b LatexBlock)
- func (w *HTMLWriter) WriteLatexFragment(l LatexFragment)
- func (w *HTMLWriter) WriteLineBreak(l LineBreak)
- func (w *HTMLWriter) WriteList(l List)
- func (w *HTMLWriter) WriteListItem(li ListItem)
- func (w *HTMLWriter) WriteMacro(m Macro)
- func (w *HTMLWriter) WriteNodeWithMeta(n NodeWithMeta)
- func (w *HTMLWriter) WriteNodeWithName(n NodeWithName)
- func (w *HTMLWriter) WriteNodesAsString(nodes ...Node) string
- func (w *HTMLWriter) WriteOutline(d *Document, maxLvl int)
- func (w *HTMLWriter) WriteParagraph(p Paragraph)
- func (w *HTMLWriter) WritePropertyDrawer(PropertyDrawer)
- func (w *HTMLWriter) WriteRegularLink(l RegularLink)
- func (w *HTMLWriter) WriteResult(r Result)
- func (w *HTMLWriter) WriteStatisticToken(s StatisticToken)
- func (w *HTMLWriter) WriteTable(t Table)
- func (w *HTMLWriter) WriteText(t Text)
- func (w *HTMLWriter) WriteTimestamp(t Timestamp)
- func (w *HTMLWriter) WriterWithExtensions() Writer
- type Headline
- type HorizontalRule
- type Include
- type InlineBlock
- type Keyword
- type LatexBlock
- type LatexFragment
- type LineBreak
- type List
- type ListItem
- type Macro
- type Metadata
- type Node
- type NodeWithMeta
- type NodeWithName
- type OrgWriter
- func (w *OrgWriter) After(d *Document)
- func (w *OrgWriter) Before(d *Document)
- func (w *OrgWriter) WriteBlock(b Block)
- func (w *OrgWriter) WriteComment(c Comment)
- func (w *OrgWriter) WriteDescriptiveListItem(di DescriptiveListItem)
- func (w *OrgWriter) WriteDrawer(d Drawer)
- func (w *OrgWriter) WriteEmphasis(e Emphasis)
- func (w *OrgWriter) WriteExample(e Example)
- func (w *OrgWriter) WriteExplicitLineBreak(l ExplicitLineBreak)
- func (w *OrgWriter) WriteFootnoteDefinition(f FootnoteDefinition)
- func (w *OrgWriter) WriteFootnoteLink(l FootnoteLink)
- func (w *OrgWriter) WriteHeadline(h Headline)
- func (w *OrgWriter) WriteHorizontalRule(hr HorizontalRule)
- func (w *OrgWriter) WriteInclude(i Include)
- func (w *OrgWriter) WriteInlineBlock(b InlineBlock)
- func (w *OrgWriter) WriteKeyword(k Keyword)
- func (w *OrgWriter) WriteLatexBlock(b LatexBlock)
- func (w *OrgWriter) WriteLatexFragment(l LatexFragment)
- func (w *OrgWriter) WriteLineBreak(l LineBreak)
- func (w *OrgWriter) WriteList(l List)
- func (w *OrgWriter) WriteListItem(li ListItem)
- func (w *OrgWriter) WriteMacro(m Macro)
- func (w *OrgWriter) WriteNodeWithMeta(n NodeWithMeta)
- func (w *OrgWriter) WriteNodeWithName(n NodeWithName)
- func (w *OrgWriter) WriteNodesAsString(nodes ...Node) string
- func (w *OrgWriter) WriteParagraph(p Paragraph)
- func (w *OrgWriter) WritePropertyDrawer(d PropertyDrawer)
- func (w *OrgWriter) WriteRegularLink(l RegularLink)
- func (w *OrgWriter) WriteResult(r Result)
- func (w *OrgWriter) WriteStatisticToken(s StatisticToken)
- func (w *OrgWriter) WriteTable(t Table)
- func (w *OrgWriter) WriteText(t Text)
- func (w *OrgWriter) WriteTimestamp(t Timestamp)
- func (w *OrgWriter) WriterWithExtensions() Writer
- type Outline
- type Paragraph
- type PropertyDrawer
- type RegularLink
- type Result
- type Row
- type Section
- type StatisticToken
- type Table
- type Text
- type Timestamp
- type Writer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsNewLineChar ¶ added in v1.7.0
func ParseRanges ¶ added in v1.6.6
Parse ranges like this: "3-5" -> [[3, 5]] "3 8-10" -> [[3, 3], [8, 10]] "3 5 6" -> [[3, 3], [5, 5], [6, 6]]
This is Hugo's hlLinesToRanges with "startLine" removed and errors ignored.
func String ¶
String returns the pretty printed Org mode string for the given nodes (see OrgWriter).
func WriteNodes ¶
Types ¶
type Block ¶
func (Block) ParameterMap ¶ added in v1.1.0
type Column ¶
type Column struct { Children []Node *ColumnInfo }
type ColumnInfo ¶
type Configuration ¶
type Configuration struct { MaxEmphasisNewLines int // Maximum number of newlines inside an emphasis. See org-emphasis-regexp-components newline. AutoLink bool // Try to convert text passages that look like hyperlinks into hyperlinks. DefaultSettings map[string]string // Default values for settings that are overriden by setting the same key in BufferSettings. Log *log.Logger // Log is used to print warnings during parsing. ReadFile func(filename string) ([]byte, error) // ReadFile is used to read e.g. #+INCLUDE files. }
func New ¶
func New() *Configuration
New returns a new Configuration with (hopefully) sane defaults.
func (*Configuration) Parse ¶
func (c *Configuration) Parse(input io.Reader, path string) (d *Document)
Parse parses the input into an AST (and some other helpful fields like Outline). To allow method chaining, errors are stored in document.Error rather than being returned.
func (*Configuration) Silent ¶
func (c *Configuration) Silent() *Configuration
Silent disables all logging of warnings during parsing.
type DescriptiveListItem ¶
func (DescriptiveListItem) String ¶
func (n DescriptiveListItem) String() string
type Document ¶
type Document struct { *Configuration Path string // Path of the file containing the parse input - used to resolve relative paths during parsing (e.g. INCLUDE). Macros map[string]string Links map[string]string Nodes []Node NamedNodes map[string]Node Outline Outline // Outline is a Table Of Contents for the document and contains all sections (headline + content). BufferSettings map[string]string // Settings contains all settings that were parsed from keywords. Error error // contains filtered or unexported fields }
Document contains the parsing results and a pointer to the Configuration.
func (*Document) Get ¶
Get returns the value for key in BufferSettings or DefaultSettings if key does not exist in the former
func (*Document) GetOption ¶
GetOption returns the value associated to the export option key Currently supported options: - < (export timestamps) - e (export org entities) - f (export footnotes) - title (export title) - toc (export table of content. an int limits the included org headline lvl) - todo (export headline todo status) - pri (export headline priority) - tags (export headline tags) - ealb (non-standard) (export with east asian line breaks / ignore line breaks between multi-byte characters) see https://orgmode.org/manual/Export-Settings.html for more information
type ExplicitLineBreak ¶
type ExplicitLineBreak struct{}
func (ExplicitLineBreak) String ¶
func (n ExplicitLineBreak) String() string
type FootnoteDefinition ¶
func (FootnoteDefinition) String ¶
func (n FootnoteDefinition) String() string
type FootnoteLink ¶
type FootnoteLink struct { Name string Definition *FootnoteDefinition }
func (FootnoteLink) String ¶
func (n FootnoteLink) String() string
type HTMLWriter ¶
type HTMLWriter struct { ExtendingWriter Writer HighlightCodeBlock func(source, lang string, inline bool, params map[string]string) string PrettyRelativeLinks bool // TopLevelHLevel determines what HTML heading to use for a // level-1 Org headline, and by extension further headings. // // For example, a value of 1 means a top-level Org headline will be // rendered as an <h1> element, a level-2 Org headline will be // rendered as an <h2> element, and so on. // // A value of 2 (default) means a top-level Org headline will be // rendered as an <h2> element, a level-2 Org headline will be // rendered as an <h3> element, and so on. // // This setting and its default behavior match Org's // :html-toplevel-hlevel export property and the associated // org-html-toplevel-hlevel variable. TopLevelHLevel int strings.Builder // contains filtered or unexported fields }
HTMLWriter exports an org document into a html document.
func NewHTMLWriter ¶
func NewHTMLWriter() *HTMLWriter
func (*HTMLWriter) After ¶
func (w *HTMLWriter) After(d *Document)
func (*HTMLWriter) Before ¶
func (w *HTMLWriter) Before(d *Document)
func (*HTMLWriter) WriteBlock ¶
func (w *HTMLWriter) WriteBlock(b Block)
func (*HTMLWriter) WriteComment ¶
func (w *HTMLWriter) WriteComment(Comment)
func (*HTMLWriter) WriteDescriptiveListItem ¶
func (w *HTMLWriter) WriteDescriptiveListItem(di DescriptiveListItem)
func (*HTMLWriter) WriteDrawer ¶
func (w *HTMLWriter) WriteDrawer(d Drawer)
func (*HTMLWriter) WriteEmphasis ¶
func (w *HTMLWriter) WriteEmphasis(e Emphasis)
func (*HTMLWriter) WriteExample ¶
func (w *HTMLWriter) WriteExample(e Example)
func (*HTMLWriter) WriteExplicitLineBreak ¶
func (w *HTMLWriter) WriteExplicitLineBreak(l ExplicitLineBreak)
func (*HTMLWriter) WriteFootnoteDefinition ¶
func (w *HTMLWriter) WriteFootnoteDefinition(f FootnoteDefinition)
func (*HTMLWriter) WriteFootnoteLink ¶
func (w *HTMLWriter) WriteFootnoteLink(l FootnoteLink)
func (*HTMLWriter) WriteFootnotes ¶
func (w *HTMLWriter) WriteFootnotes(d *Document)
func (*HTMLWriter) WriteHeadline ¶
func (w *HTMLWriter) WriteHeadline(h Headline)
func (*HTMLWriter) WriteHorizontalRule ¶
func (w *HTMLWriter) WriteHorizontalRule(h HorizontalRule)
func (*HTMLWriter) WriteInclude ¶
func (w *HTMLWriter) WriteInclude(i Include)
func (*HTMLWriter) WriteInlineBlock ¶ added in v1.1.0
func (w *HTMLWriter) WriteInlineBlock(b InlineBlock)
func (*HTMLWriter) WriteKeyword ¶
func (w *HTMLWriter) WriteKeyword(k Keyword)
func (*HTMLWriter) WriteLatexBlock ¶ added in v1.6.6
func (w *HTMLWriter) WriteLatexBlock(b LatexBlock)
func (*HTMLWriter) WriteLatexFragment ¶ added in v0.1.5
func (w *HTMLWriter) WriteLatexFragment(l LatexFragment)
func (*HTMLWriter) WriteLineBreak ¶
func (w *HTMLWriter) WriteLineBreak(l LineBreak)
func (*HTMLWriter) WriteList ¶
func (w *HTMLWriter) WriteList(l List)
func (*HTMLWriter) WriteListItem ¶
func (w *HTMLWriter) WriteListItem(li ListItem)
func (*HTMLWriter) WriteMacro ¶ added in v1.2.0
func (w *HTMLWriter) WriteMacro(m Macro)
func (*HTMLWriter) WriteNodeWithMeta ¶
func (w *HTMLWriter) WriteNodeWithMeta(n NodeWithMeta)
func (*HTMLWriter) WriteNodeWithName ¶ added in v0.1.7
func (w *HTMLWriter) WriteNodeWithName(n NodeWithName)
func (*HTMLWriter) WriteNodesAsString ¶ added in v0.1.8
func (w *HTMLWriter) WriteNodesAsString(nodes ...Node) string
func (*HTMLWriter) WriteOutline ¶
func (w *HTMLWriter) WriteOutline(d *Document, maxLvl int)
func (*HTMLWriter) WriteParagraph ¶
func (w *HTMLWriter) WriteParagraph(p Paragraph)
func (*HTMLWriter) WritePropertyDrawer ¶
func (w *HTMLWriter) WritePropertyDrawer(PropertyDrawer)
func (*HTMLWriter) WriteRegularLink ¶
func (w *HTMLWriter) WriteRegularLink(l RegularLink)
func (*HTMLWriter) WriteResult ¶ added in v1.1.0
func (w *HTMLWriter) WriteResult(r Result)
func (*HTMLWriter) WriteStatisticToken ¶
func (w *HTMLWriter) WriteStatisticToken(s StatisticToken)
func (*HTMLWriter) WriteTable ¶
func (w *HTMLWriter) WriteTable(t Table)
func (*HTMLWriter) WriteText ¶
func (w *HTMLWriter) WriteText(t Text)
func (*HTMLWriter) WriteTimestamp ¶
func (w *HTMLWriter) WriteTimestamp(t Timestamp)
func (*HTMLWriter) WriterWithExtensions ¶ added in v0.1.7
func (w *HTMLWriter) WriterWithExtensions() Writer
type Headline ¶
type Headline struct { Index int Lvl int Status string Priority string Properties *PropertyDrawer Title []Node Tags []string Children []Node }
func (Headline) IsExcluded ¶ added in v1.6.0
type HorizontalRule ¶
type HorizontalRule struct{}
func (HorizontalRule) String ¶
func (n HorizontalRule) String() string
type InlineBlock ¶ added in v1.1.0
func (InlineBlock) String ¶ added in v1.1.0
func (n InlineBlock) String() string
type LatexBlock ¶ added in v1.6.6
type LatexBlock struct {
Content []Node
}
func (LatexBlock) String ¶ added in v1.6.6
func (n LatexBlock) String() string
type LatexFragment ¶ added in v0.1.5
func (LatexFragment) String ¶ added in v0.1.5
func (n LatexFragment) String() string
type Node ¶
type Node interface {
String() string // String returns the pretty printed Org mode string for the node (see OrgWriter).
}
Node represents a parsed node of the document.
type NodeWithMeta ¶
func (NodeWithMeta) String ¶
func (n NodeWithMeta) String() string
type NodeWithName ¶ added in v0.1.7
func (NodeWithName) String ¶ added in v0.1.7
func (n NodeWithName) String() string
type OrgWriter ¶
type OrgWriter struct { ExtendingWriter Writer TagsColumn int strings.Builder // contains filtered or unexported fields }
OrgWriter export an org document into pretty printed org document.
func NewOrgWriter ¶
func NewOrgWriter() *OrgWriter
func (*OrgWriter) WriteBlock ¶
func (*OrgWriter) WriteComment ¶
func (*OrgWriter) WriteDescriptiveListItem ¶
func (w *OrgWriter) WriteDescriptiveListItem(di DescriptiveListItem)
func (*OrgWriter) WriteDrawer ¶
func (*OrgWriter) WriteEmphasis ¶
func (*OrgWriter) WriteExample ¶
func (*OrgWriter) WriteExplicitLineBreak ¶
func (w *OrgWriter) WriteExplicitLineBreak(l ExplicitLineBreak)
func (*OrgWriter) WriteFootnoteDefinition ¶
func (w *OrgWriter) WriteFootnoteDefinition(f FootnoteDefinition)
func (*OrgWriter) WriteFootnoteLink ¶
func (w *OrgWriter) WriteFootnoteLink(l FootnoteLink)
func (*OrgWriter) WriteHeadline ¶
func (*OrgWriter) WriteHorizontalRule ¶
func (w *OrgWriter) WriteHorizontalRule(hr HorizontalRule)
func (*OrgWriter) WriteInclude ¶
func (*OrgWriter) WriteInlineBlock ¶ added in v1.1.0
func (w *OrgWriter) WriteInlineBlock(b InlineBlock)
func (*OrgWriter) WriteKeyword ¶
func (*OrgWriter) WriteLatexBlock ¶ added in v1.6.6
func (w *OrgWriter) WriteLatexBlock(b LatexBlock)
func (*OrgWriter) WriteLatexFragment ¶ added in v0.1.5
func (w *OrgWriter) WriteLatexFragment(l LatexFragment)
func (*OrgWriter) WriteLineBreak ¶
func (*OrgWriter) WriteListItem ¶
func (*OrgWriter) WriteMacro ¶ added in v1.2.0
func (*OrgWriter) WriteNodeWithMeta ¶
func (w *OrgWriter) WriteNodeWithMeta(n NodeWithMeta)
func (*OrgWriter) WriteNodeWithName ¶ added in v0.1.7
func (w *OrgWriter) WriteNodeWithName(n NodeWithName)
func (*OrgWriter) WriteNodesAsString ¶ added in v0.1.8
func (*OrgWriter) WriteParagraph ¶
func (*OrgWriter) WritePropertyDrawer ¶
func (w *OrgWriter) WritePropertyDrawer(d PropertyDrawer)
func (*OrgWriter) WriteRegularLink ¶
func (w *OrgWriter) WriteRegularLink(l RegularLink)
func (*OrgWriter) WriteResult ¶ added in v1.1.0
func (*OrgWriter) WriteStatisticToken ¶
func (w *OrgWriter) WriteStatisticToken(s StatisticToken)
func (*OrgWriter) WriteTable ¶
func (*OrgWriter) WriteTimestamp ¶
func (*OrgWriter) WriterWithExtensions ¶ added in v0.1.7
type PropertyDrawer ¶
type PropertyDrawer struct {
Properties [][]string
}
func (PropertyDrawer) String ¶
func (n PropertyDrawer) String() string
type RegularLink ¶
func (RegularLink) Kind ¶
func (l RegularLink) Kind() string
func (RegularLink) String ¶
func (n RegularLink) String() string
type StatisticToken ¶
type StatisticToken struct{ Content string }
func (StatisticToken) String ¶
func (n StatisticToken) String() string
type Table ¶
type Table struct { Rows []Row ColumnInfos []ColumnInfo SeparatorIndices []int }
type Writer ¶
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) WriteResult(Result) WriteLatexBlock(LatexBlock) WriteInlineBlock(InlineBlock) 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) WriteMacro(Macro) WriteTimestamp(Timestamp) WriteFootnoteLink(FootnoteLink) WriteFootnoteDefinition(FootnoteDefinition) }
Writer is the interface that is used to export a parsed document into a new format. See Document.Write().