orgmcp

package
v0.0.0-...-140acf6 Latest Latest
Warning

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

Go to latest
Published: Feb 18, 2026 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Star bulletPrefix = "*"
	Dash bulletPrefix = "-"
)

Variables

View Source
var (
	ColTypeValue          = ColType
	ColUidValue           = ColUid
	ColPreviewValue       = ColPreview
	ColContentValue       = ColContent
	ColStatusValue        = ColStatus
	ColProgressValue      = ColProgress
	ColParentValue        = ColParent
	ColChildrenCountValue = ColChildrenCount
	ColTagsValue          = ColTags
	ColLevelValue         = ColLevel
	ColPathValue          = ColPath
	ColScheduledValue     = ColScheduled
	ColDeadlineValue      = ColDeadline
	ColClosedValue        = ColClosed
)
View Source
var (
	DeadlineValue  = "DEADLINE"
	ScheduledValue = "SCHEDULED"
	ClosedValue    = "CLOSED"
)
View Source
var AllColumnsStr = strings.Join(slice.Map(AllColumns, func(c Column) string { return c.String() }), ", ")
View Source
var DoneStatuses = []HeaderStatus{Revw, Done, Delg}
View Source
var OrderedSchedules = []ScheduleStatus{Scheduled, Deadline, Closed}
View Source
var SPECIAL_TOKENS = []string{"[", ":"}
View Source
var ScheduleKeywords = []string{"DEADLINE", "SCHEDULED", "CLOSED"}

Functions

func GetByType

func GetByType[T Render](of *OrgFile) map[Uid]T

func NewBulletFromReader

func NewBulletFromReader(r *reader.PeekReader) o.Option[*Bullet]

func NewBulletFromString

func NewBulletFromString(str string) o.Option[Bullet]

func NewHeaderFromString

func NewHeaderFromString(str string, reader *reader.PeekReader) option.Option[Header]

TODO: remove str from arguments and parse from reader only (prob make a new constructor)

func NewPlainTextFromReader

func NewPlainTextFromReader(reader *reader.PeekReader) option.Option[*PlainText]

func NewScheduleFromReader

func NewScheduleFromReader(reader *reader.PeekReader) option.Option[Schedule]

func OrgFileFromReader

func OrgFileFromReader(ctx context.Context, r io.Reader) result.Result[OrgFile]

func ParseIndentedLine

func ParseIndentedLine(r *reader.PeekReader, parent Render) option.Option[Render]

func PrintCsv

func PrintCsv(r []Render, cols []*Column) string

func PrintTable

func PrintTable(r []Render, cols []Column) string

func ProgressFromString

func ProgressFromString(str string) option.Option[Progress]

func TagListFromString

func TagListFromString(str string) option.Option[TagList]

Types

type Bullet

type Bullet struct {
	// contains filtered or unexported fields
}

func NewBullet

func NewBullet(parent Render, status BulletStatus) *Bullet

func (*Bullet) AddChildren

func (b *Bullet) AddChildren(r ...Render) error

func (*Bullet) BulletLevel

func (b *Bullet) BulletLevel() int

func (*Bullet) CheckProgress

func (b *Bullet) CheckProgress() o.Option[Progress]

func (*Bullet) ChildIndentLevel

func (b *Bullet) ChildIndentLevel() int

func (*Bullet) Children

func (b *Bullet) Children() []Render

func (*Bullet) ChildrenRec

func (b *Bullet) ChildrenRec(depth int) (children []Render)

func (*Bullet) CompleteCheckbox

func (b *Bullet) CompleteCheckbox()

CompleteCheckbox marks the checkbox as completed (checked) Only works for bullets that already have a checkbox (not NoCheck)

func (*Bullet) HasCheckbox

func (b *Bullet) HasCheckbox() bool

HasCheckbox returns true if the bullet has a checkbox

func (*Bullet) IndentLevel

func (b *Bullet) IndentLevel() int

func (*Bullet) Insert

func (b *Bullet) Insert(index int, render Render) (err error)

func (*Bullet) Level

func (b *Bullet) Level() int

func (*Bullet) Location

func (p *Bullet) Location(table map[Uid]int) (loc int)

func (*Bullet) Move

func (b *Bullet) Move(op MoveOperation) (err error)

func (*Bullet) ParentUid

func (b *Bullet) ParentUid() Uid

func (*Bullet) Path

func (b *Bullet) Path() string

func (*Bullet) Preview

func (b *Bullet) Preview(length int) string

func (*Bullet) RemoveChildren

func (b *Bullet) RemoveChildren(uids ...Uid) error

func (*Bullet) Render

func (b *Bullet) Render(builder *strings.Builder, depth int)

func (*Bullet) RenderMarkdown

func (b *Bullet) RenderMarkdown(builder *strings.Builder, depth int)

func (*Bullet) SetContent

func (b *Bullet) SetContent(content string)

func (*Bullet) SetIndex

func (b *Bullet) SetIndex(idx int)

func (*Bullet) SetParent

func (b *Bullet) SetParent(render Render) error

func (*Bullet) Status

func (b *Bullet) Status() RenderStatus

func (*Bullet) TagList

func (b *Bullet) TagList() (list TagList)

func (*Bullet) ToggleCheckbox

func (b *Bullet) ToggleCheckbox()

ToggleCheckbox toggles the checkbox state between Unchecked and Checked Only works for bullets that already have a checkbox (not NoCheck)

func (*Bullet) Uid

func (b *Bullet) Uid() Uid

type BulletStatus

type BulletStatus int
const (
	NoCheck BulletStatus = iota
	Unchecked
	Checked
)

func NewBulletStatus

func NewBulletStatus(str string) BulletStatus

type Column

type Column string
const (
	ColType          Column = "TYPE"
	ColUid           Column = "UID"
	ColPreview       Column = "PREVIEW"
	ColContent       Column = "CONTENT"
	ColStatus        Column = "STATUS"
	ColProgress      Column = "PROGRESS"
	ColParent        Column = "PARENT"
	ColChildrenCount Column = "CHILDREN_COUNT"
	ColTags          Column = "TAGS"
	ColLevel         Column = "LEVEL"
	ColPath          Column = "PATH"
	ColScheduled     Column = "SCHEDULED"
	ColDeadline      Column = "DEADLINE"
	ColClosed        Column = "CLOSED"
)

func (*Column) String

func (c *Column) String() string

func (*Column) UnmarshalJSON

func (c *Column) UnmarshalJSON(input []byte) error

func (Column) Value

func (c Column) Value(r Render, quoteChars string) (val string)

type ColumnContent

type ColumnContent struct {
	// contains filtered or unexported fields
}
type Header struct {
	Progress option.Option[Progress]
	Tags     option.Option[TagList]

	Parent option.Option[Render]

	Content string
	// contains filtered or unexported fields
}

func GetHeaderRec

func GetHeaderRec(header *Header, predicate func(*Header) bool, headers []*Header) []*Header

func NewHeader

func NewHeader(status HeaderStatus, content string) Header

func (*Header) AddChild

func (h *Header) AddChild(r Render) error

func (*Header) AddChildren

func (h *Header) AddChildren(render ...Render) error

func (*Header) CheckProgress

func (h *Header) CheckProgress() option.Option[Progress]

func (*Header) ChildIndentLevel

func (h *Header) ChildIndentLevel() int

func (*Header) Children

func (h *Header) Children() []Render

func (*Header) ChildrenRec

func (b *Header) ChildrenRec(depth int) (children []Render)

func (*Header) CompleteCheckboxByIndex

func (h *Header) CompleteCheckboxByIndex(index int) (*Bullet, error)

CompleteCheckboxByIndex finds a bullet at the given index within this header's children and marks it as completed. Returns the updated bullet or an error.

func (*Header) CreateSubheader

func (h *Header) CreateSubheader(title string, status HeaderStatus) *Header

CreateSubheader creates a new header as a child of the current header The new header's level will be one more than the parent's level A unique UID will be generated and assigned using NewPropertiesWithUID

func (*Header) IndentLevel

func (h *Header) IndentLevel() int

func (*Header) Insert

func (h *Header) Insert(index int, render Render) (err error)

func (*Header) Level

func (h *Header) Level() int

func (*Header) Location

func (p *Header) Location(table map[Uid]int) (loc int)

func (*Header) Move

func (h *Header) Move(op MoveOperation) (err error)

func (*Header) ParentUid

func (h *Header) ParentUid() Uid

GetParentUid returns the UID of the parent header, if it exists

func (*Header) Path

func (h *Header) Path() string

func (*Header) Preview

func (h *Header) Preview(length int) string

func (*Header) RemoveChildren

func (h *Header) RemoveChildren(uids ...Uid) error

func (*Header) Render

func (h *Header) Render(builder *strings.Builder, depth int)

func (*Header) RenderMarkdown

func (h *Header) RenderMarkdown(builder *strings.Builder, depth int)

func (*Header) Schedule

func (h *Header) Schedule() option.Option[*Schedule]

func (*Header) SetLevel

func (h *Header) SetLevel(level int)

func (*Header) SetParent

func (h *Header) SetParent(render Render) error

func (*Header) SetStatus

func (h *Header) SetStatus(status HeaderStatus)

func (*Header) Status

func (h *Header) Status() RenderStatus

func (*Header) TagList

func (h *Header) TagList() (list TagList)

func (*Header) ToggleCheckboxByIndex

func (h *Header) ToggleCheckboxByIndex(index int) (*Bullet, error)

ToggleCheckboxByIndex finds a bullet at the given index within this header's children and toggles its checkbox state. Returns the updated bullet or an error.

func (*Header) Uid

func (b *Header) Uid() Uid

type HeaderStatus

type HeaderStatus string
const (
	None HeaderStatus = "NONE"
	Todo HeaderStatus = "TODO"
	Next HeaderStatus = "NEXT"
	Prog HeaderStatus = "PROG"
	Revw HeaderStatus = "REVW"
	Done HeaderStatus = "DONE"
	Delg HeaderStatus = "DELG"
)

func StatusFromString

func StatusFromString(str string) HeaderStatus

func (HeaderStatus) GetNext

func (s HeaderStatus) GetNext() HeaderStatus

func (HeaderStatus) RenderMarkdown

func (s HeaderStatus) RenderMarkdown(builder *strings.Builder)

func (HeaderStatus) String

func (s HeaderStatus) String() string

func (*HeaderStatus) UnmarshalJSON

func (h *HeaderStatus) UnmarshalJSON(input []byte) error

type IndexOperation

type IndexOperation struct {
	// contains filtered or unexported fields
}

type IndexRelativeOperation

type IndexRelativeOperation struct {
	// contains filtered or unexported fields
}

type MoveOperation

type MoveOperation struct {
	Swap          *SwapOperation
	Index         *IndexOperation
	IndexRelative *IndexRelativeOperation
}

func NewMoveOperation

func NewMoveOperation[T MoveOperationKind](kind T) MoveOperation

func (MoveOperation) MoveSlice

func (op MoveOperation) MoveSlice(slice []Render) (res []Render, err error)

type MoveOperationKind

type MoveOperationKind interface {
	SwapOperation | IndexOperation | IndexRelativeOperation
}

type OrgFile

type OrgFile struct {
	// contains filtered or unexported fields
}

func (*OrgFile) AddChildren

func (of *OrgFile) AddChildren(r ...Render) error

func (*OrgFile) BuildLocationTable

func (of *OrgFile) BuildLocationTable() *map[Uid]int

func (*OrgFile) CheckProgress

func (of *OrgFile) CheckProgress() option.Option[Progress]

func (*OrgFile) ChildIndentLevel

func (of *OrgFile) ChildIndentLevel() int

func (*OrgFile) Children

func (of *OrgFile) Children() []Render

func (*OrgFile) ChildrenRec

func (of *OrgFile) ChildrenRec(depth int) []Render

func (*OrgFile) GenerateEmbeddings

func (of *OrgFile) GenerateEmbeddings() error

func (*OrgFile) GetHeaderByStatus

func (of *OrgFile) GetHeaderByStatus(status RenderStatus) []*Header

func (*OrgFile) GetLocationTable

func (of *OrgFile) GetLocationTable() *map[Uid]int

func (*OrgFile) GetStatusOverview

func (of *OrgFile) GetStatusOverview() map[RenderStatus]StatusReport

func (*OrgFile) GetTag

func (of *OrgFile) GetTag(tag string) option.Option[*Header]

func (*OrgFile) GetTagOverview

func (of *OrgFile) GetTagOverview() map[string]int

func (*OrgFile) GetUid

func (of *OrgFile) GetUid(uid Uid) option.Option[Render]

func (*OrgFile) IndentLevel

func (of *OrgFile) IndentLevel() int

func (*OrgFile) Insert

func (of *OrgFile) Insert(index int, render Render) (err error)

func (*OrgFile) Level

func (of *OrgFile) Level() int

func (*OrgFile) Location

func (of *OrgFile) Location(_ map[Uid]int) int

func (*OrgFile) Move

func (of *OrgFile) Move(op MoveOperation) (err error)

func (*OrgFile) ParentUid

func (of *OrgFile) ParentUid() Uid

func (*OrgFile) Path

func (of *OrgFile) Path() string

func (*OrgFile) Preview

func (of *OrgFile) Preview(_ int) string

func (*OrgFile) RemoveChildren

func (of *OrgFile) RemoveChildren(uids ...Uid) error

func (*OrgFile) Render

func (of *OrgFile) Render(builder *strings.Builder, depth int)

func (*OrgFile) RenderMarkdown

func (of *OrgFile) RenderMarkdown(builder *strings.Builder, depth int)

func (*OrgFile) SetParent

func (of *OrgFile) SetParent(render Render) error

func (*OrgFile) Status

func (of *OrgFile) Status() RenderStatus

func (*OrgFile) TagList

func (of *OrgFile) TagList() (list TagList)

func (*OrgFile) Uid

func (of *OrgFile) Uid() Uid

func (*OrgFile) VectorSearch

func (of *OrgFile) VectorSearch(query string, top_n int) (h []*Header, err error)

type PlainText

type PlainText struct {
	// contains filtered or unexported fields
}

func NewPlainText

func NewPlainText(content string) PlainText

func (*PlainText) AddChildren

func (p *PlainText) AddChildren(r ...Render) error

func (*PlainText) CheckProgress

func (p *PlainText) CheckProgress() option.Option[Progress]

func (*PlainText) ChildIndentLevel

func (p *PlainText) ChildIndentLevel() int

func (*PlainText) Children

func (p *PlainText) Children() []Render

func (*PlainText) ChildrenRec

func (p *PlainText) ChildrenRec(_ int) []Render

func (*PlainText) IndentLevel

func (p *PlainText) IndentLevel() int

func (*PlainText) Insert

func (p *PlainText) Insert(index int, render Render) (err error)

func (*PlainText) Level

func (p *PlainText) Level() int

func (*PlainText) Location

func (p *PlainText) Location(table map[Uid]int) (loc int)

func (*PlainText) Move

func (p *PlainText) Move(op MoveOperation) (err error)

func (*PlainText) ParentUid

func (p *PlainText) ParentUid() Uid

func (*PlainText) Path

func (p *PlainText) Path() string

func (*PlainText) Preview

func (p *PlainText) Preview(length int) string

func (*PlainText) RemoveChildren

func (p *PlainText) RemoveChildren(...Uid) error

func (*PlainText) Render

func (p *PlainText) Render(builder *strings.Builder, depth int)

func (*PlainText) RenderMarkdown

func (t *PlainText) RenderMarkdown(builder *strings.Builder, depth int)

func (*PlainText) SetContent

func (p *PlainText) SetContent(content string)

func (*PlainText) SetParent

func (p *PlainText) SetParent(r Render) error

func (*PlainText) Status

func (p *PlainText) Status() RenderStatus

func (*PlainText) TagList

func (p *PlainText) TagList() (list TagList)

func (*PlainText) Uid

func (p *PlainText) Uid() Uid

type Progress

type Progress struct {
	Total    int
	Complete int
	// contains filtered or unexported fields
}

func (*Progress) Done

func (p *Progress) Done() bool

func (*Progress) Equal

func (p *Progress) Equal(other Progress) bool

func (*Progress) Prog

func (p *Progress) Prog() bool

Prog returns true if the progress is partially complete (at least one but not all).

func (*Progress) Render

func (p *Progress) Render(builder *strings.Builder)

type PropValue

type PropValue interface {
	Date() option.Option[time.Time]
	String() string
	Int() option.Option[int]
}

type Properties

type Properties struct {
	// contains filtered or unexported fields
}

func NewPropertiesFromReader

func NewPropertiesFromReader(reader *reader.PeekReader) (p Properties)

func NewPropertiesWithUID

func NewPropertiesWithUID(parent *Header) Properties

generateUID returns an 8-digit pseudo-random identifier as a string.

func (*Properties) ChildIndentLevel

func (p *Properties) ChildIndentLevel() int

func (*Properties) IndentLevel

func (p *Properties) IndentLevel() int

func (*Properties) Render

func (p *Properties) Render(sb *strings.Builder)

Render writes the properties drawer to the given strings.Builder in org-mode format. Example output: :PROPERTIES: :KEY1: value1 :KEY2: value2 :END:

func (*Properties) RenderMarkdown

func (p *Properties) RenderMarkdown(builder *strings.Builder)

type Render

type Render interface {
	RenderMarkdown
	RenderOrg
}

type RenderBase

type RenderBase interface {
	CheckProgress() option.Option[Progress]
	IndentLevel() int
	ChildIndentLevel() int
	Level() int
	Location(table map[Uid]int) int
	AddChildren(...Render) error
	SetParent(Render) error
	RemoveChildren(...Uid) error
	Children() []Render
	ChildrenRec(depth int) []Render
	Uid() Uid
	ParentUid() Uid
	Status() RenderStatus
	TagList() TagList
	Preview(length int) string
	Path() string
	Insert(int, Render) error
	Move(MoveOperation) error
}

type RenderMarkdown

type RenderMarkdown interface {
	RenderBase
	RenderMarkdown(builder *strings.Builder, depth int)
}

type RenderOrg

type RenderOrg interface {
	RenderBase
	Render(builder *strings.Builder, depth int)
}

type RenderStatus

type RenderStatus string

func (RenderStatus) String

func (r RenderStatus) String() string

type Schedule

type Schedule struct {
	Values map[ScheduleStatus]struct {
		T time.Time
		// contains filtered or unexported fields
	}
	// contains filtered or unexported fields
}

func NewSchedule

func NewSchedule(parent *Header) Schedule

func (Schedule) AppendSchedule

func (s Schedule) AppendSchedule(status ScheduleStatus, t time.Time, withTime bool) Schedule

func (*Schedule) Render

func (s *Schedule) Render(builder *strings.Builder)

type ScheduleStatus

type ScheduleStatus int
const (
	Deadline ScheduleStatus = iota
	Scheduled
	Closed
)

func NewScheduleStatus

func NewScheduleStatus(str string) (ScheduleStatus, error)

func (ScheduleStatus) String

func (s ScheduleStatus) String() string

func (*ScheduleStatus) UnmarshalJSON

func (s *ScheduleStatus) UnmarshalJSON(data []byte) (err error)

type SearchScore

type SearchScore struct {
	// contains filtered or unexported fields
}

type StatusReport

type StatusReport struct {
	Count int   `json:"count"`
	Ids   []Uid `json:"ids"`
}

type SwapOperation

type SwapOperation struct {
	// contains filtered or unexported fields
}

type TagList

type TagList []string

func (TagList) Render

func (tl TagList) Render(builder *strings.Builder)

type Uid

type Uid struct {
	// contains filtered or unexported fields
}

func NewUid

func NewUid[T UidValue](uid T) Uid

func (*Uid) MarshalText

func (u *Uid) MarshalText() ([]byte, error)

func (Uid) String

func (u Uid) String() string

type UidValue

type UidValue interface {
	~int | ~string
}

Jump to

Keyboard shortcuts

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