org

package
v1.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 16, 2023 License: MIT Imports: 22 Imported by: 39

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsNewLineChar added in v1.7.0

func IsNewLineChar(r rune) bool

func ParseRanges added in v1.6.6

func ParseRanges(s string) [][2]int

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

func String(nodes ...Node) string

String returns the pretty printed Org mode string for the given nodes (see OrgWriter).

func WriteNodes

func WriteNodes(w Writer, nodes ...Node)

Types

type Block

type Block struct {
	Name       string
	Parameters []string
	Children   []Node
	Result     Node
}

func (Block) ParameterMap added in v1.1.0

func (b Block) ParameterMap() map[string]string

func (Block) String

func (n Block) String() string

type Column

type Column struct {
	Children []Node
	*ColumnInfo
}

type ColumnInfo

type ColumnInfo struct {
	Align      string
	Len        int
	DisplayLen int
}

type Comment

type Comment struct{ Content string }

func (Comment) String

func (n Comment) String() string

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

type DescriptiveListItem struct {
	Bullet  string
	Status  string
	Term    []Node
	Details []Node
}

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

func (d *Document) Get(key string) string

Get returns the value for key in BufferSettings or DefaultSettings if key does not exist in the former

func (*Document) GetOption

func (d *Document) GetOption(key string) string

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

func (*Document) Write

func (d *Document) Write(w Writer) (out string, err error)

Write is called after with an instance of the Writer interface to export a parsed Document into another format.

type Drawer

type Drawer struct {
	Name     string
	Children []Node
}

func (Drawer) String

func (n Drawer) String() string

type Emphasis

type Emphasis struct {
	Kind    string
	Content []Node
}

func (Emphasis) String

func (n Emphasis) String() string

type Example

type Example struct {
	Children []Node
}

func (Example) String

func (n Example) String() string

type ExplicitLineBreak

type ExplicitLineBreak struct{}

func (ExplicitLineBreak) String

func (n ExplicitLineBreak) String() string

type FootnoteDefinition

type FootnoteDefinition struct {
	Name     string
	Children []Node
	Inline   bool
}

func (FootnoteDefinition) String

func (n FootnoteDefinition) String() string
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 (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 (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) ID

func (h Headline) ID() string

func (Headline) IsExcluded added in v1.6.0

func (h Headline) IsExcluded(d *Document) bool

func (Headline) String

func (n Headline) String() string

type HorizontalRule

type HorizontalRule struct{}

func (HorizontalRule) String

func (n HorizontalRule) String() string

type Include

type Include struct {
	Keyword
	Resolve func() Node
}

func (Include) String

func (n Include) String() string

type InlineBlock added in v1.1.0

type InlineBlock struct {
	Name       string
	Parameters []string
	Children   []Node
}

func (InlineBlock) String added in v1.1.0

func (n InlineBlock) String() string

type Keyword

type Keyword struct {
	Key   string
	Value string
}

func (Keyword) String

func (n Keyword) 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

type LatexFragment struct {
	OpeningPair string
	ClosingPair string
	Content     []Node
}

func (LatexFragment) String added in v0.1.5

func (n LatexFragment) String() string

type LineBreak

type LineBreak struct {
	Count                      int
	BetweenMultibyteCharacters bool
}

func (LineBreak) String

func (n LineBreak) String() string

type List

type List struct {
	Kind  string
	Items []Node
}

func (List) String

func (n List) String() string

type ListItem

type ListItem struct {
	Bullet   string
	Status   string
	Value    string
	Children []Node
}

func (ListItem) String

func (n ListItem) String() string

type Macro added in v1.2.0

type Macro struct {
	Name       string
	Parameters []string
}

func (Macro) String added in v1.2.0

func (n Macro) String() string

type Metadata

type Metadata struct {
	Caption        [][]Node
	HTMLAttributes [][]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

type NodeWithMeta struct {
	Node Node
	Meta Metadata
}

func (NodeWithMeta) String

func (n NodeWithMeta) String() string

type NodeWithName added in v0.1.7

type NodeWithName struct {
	Name string
	Node Node
}

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) After

func (w *OrgWriter) After(d *Document)

func (*OrgWriter) Before

func (w *OrgWriter) Before(d *Document)

func (*OrgWriter) WriteBlock

func (w *OrgWriter) WriteBlock(b Block)

func (*OrgWriter) WriteComment

func (w *OrgWriter) WriteComment(c Comment)

func (*OrgWriter) WriteDescriptiveListItem

func (w *OrgWriter) WriteDescriptiveListItem(di DescriptiveListItem)

func (*OrgWriter) WriteDrawer

func (w *OrgWriter) WriteDrawer(d Drawer)

func (*OrgWriter) WriteEmphasis

func (w *OrgWriter) WriteEmphasis(e Emphasis)

func (*OrgWriter) WriteExample

func (w *OrgWriter) WriteExample(e Example)

func (*OrgWriter) WriteExplicitLineBreak

func (w *OrgWriter) WriteExplicitLineBreak(l ExplicitLineBreak)

func (*OrgWriter) WriteFootnoteDefinition

func (w *OrgWriter) WriteFootnoteDefinition(f FootnoteDefinition)
func (w *OrgWriter) WriteFootnoteLink(l FootnoteLink)

func (*OrgWriter) WriteHeadline

func (w *OrgWriter) WriteHeadline(h Headline)

func (*OrgWriter) WriteHorizontalRule

func (w *OrgWriter) WriteHorizontalRule(hr HorizontalRule)

func (*OrgWriter) WriteInclude

func (w *OrgWriter) WriteInclude(i Include)

func (*OrgWriter) WriteInlineBlock added in v1.1.0

func (w *OrgWriter) WriteInlineBlock(b InlineBlock)

func (*OrgWriter) WriteKeyword

func (w *OrgWriter) WriteKeyword(k Keyword)

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 (w *OrgWriter) WriteLineBreak(l LineBreak)

func (*OrgWriter) WriteList

func (w *OrgWriter) WriteList(l List)

func (*OrgWriter) WriteListItem

func (w *OrgWriter) WriteListItem(li ListItem)

func (*OrgWriter) WriteMacro added in v1.2.0

func (w *OrgWriter) WriteMacro(m Macro)

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 (w *OrgWriter) WriteNodesAsString(nodes ...Node) string

func (*OrgWriter) WriteParagraph

func (w *OrgWriter) WriteParagraph(p Paragraph)

func (*OrgWriter) WritePropertyDrawer

func (w *OrgWriter) WritePropertyDrawer(d PropertyDrawer)
func (w *OrgWriter) WriteRegularLink(l RegularLink)

func (*OrgWriter) WriteResult added in v1.1.0

func (w *OrgWriter) WriteResult(r Result)

func (*OrgWriter) WriteStatisticToken

func (w *OrgWriter) WriteStatisticToken(s StatisticToken)

func (*OrgWriter) WriteTable

func (w *OrgWriter) WriteTable(t Table)

func (*OrgWriter) WriteText

func (w *OrgWriter) WriteText(t Text)

func (*OrgWriter) WriteTimestamp

func (w *OrgWriter) WriteTimestamp(t Timestamp)

func (*OrgWriter) WriterWithExtensions added in v0.1.7

func (w *OrgWriter) WriterWithExtensions() Writer

type Outline

type Outline struct {
	*Section
	// contains filtered or unexported fields
}

type Paragraph

type Paragraph struct{ Children []Node }

func (Paragraph) String

func (n Paragraph) String() string

type PropertyDrawer

type PropertyDrawer struct {
	Properties [][]string
}

func (*PropertyDrawer) Get

func (d *PropertyDrawer) Get(key string) (string, bool)

func (PropertyDrawer) String

func (n PropertyDrawer) String() string
type RegularLink struct {
	Protocol    string
	Description []Node
	URL         string
	AutoLink    bool
}

func (RegularLink) Kind

func (l RegularLink) Kind() string

func (RegularLink) String

func (n RegularLink) String() string

type Result added in v1.1.0

type Result struct {
	Node Node
}

func (Result) String added in v1.1.0

func (n Result) String() string

type Row

type Row struct {
	Columns   []Column
	IsSpecial bool
}

type Section

type Section struct {
	Headline *Headline
	Parent   *Section
	Children []*Section
}

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
}

func (Table) String

func (n Table) String() string

type Text

type Text struct {
	Content string
	IsRaw   bool
}

func (Text) String

func (n Text) String() string

type Timestamp

type Timestamp struct {
	Time     time.Time
	IsDate   bool
	Interval string
}

func (Timestamp) String

func (n Timestamp) String() string

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().

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL