org

package
v0.1.9 Latest Latest
Warning

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

Go to latest
Published: Dec 22, 2019 License: MIT Imports: 19 Imported by: 0

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 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
}

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
}

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

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

GetOption returns the value associated to the export option key Currently supported options: - < (export timestamps) - e (export org entities) - f (export footnotes) - toc (export table of content) - todo (export headline todo status) - pri (export headline priority) - tags (export headline tags) 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) string

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

func (w *HTMLWriter) WriteKeyword(k Keyword)

func (*HTMLWriter) WriteLatexFragment

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

func (w *HTMLWriter) WriteNodeWithMeta(n NodeWithMeta)

func (*HTMLWriter) WriteNodeWithName

func (w *HTMLWriter) WriteNodeWithName(n NodeWithName)

func (*HTMLWriter) WriteNodesAsString

func (w *HTMLWriter) WriteNodesAsString(nodes ...Node) string

func (*HTMLWriter) WriteOutline

func (w *HTMLWriter) WriteOutline(d *Document)

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

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

type Keyword struct {
	Key   string
	Value string
}

func (Keyword) String

func (n Keyword) String() string

type LatexFragment

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

func (LatexFragment) String

func (n LatexFragment) String() string

type LineBreak

type LineBreak struct{ Count int }

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
	Children []Node
}

func (ListItem) String

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

type NodeWithName struct {
	Name string
	Node Node
}

func (NodeWithName) String

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

func (w *OrgWriter) WriteKeyword(k Keyword)

func (*OrgWriter) WriteLatexFragment

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

func (w *OrgWriter) WriteNodeWithMeta(n NodeWithMeta)

func (*OrgWriter) WriteNodeWithName

func (w *OrgWriter) WriteNodeWithName(n NodeWithName)

func (*OrgWriter) WriteNodesAsString

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

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 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
}

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

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