rope

package
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2025 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetIndexFromRowCol

func GetIndexFromRowCol(n RopeNode, row int, col int) int

func GetLineBreaks

func GetLineBreaks(n RopeNode) int

Types

type RopeEmptyNode

type RopeEmptyNode struct{}

func (*RopeEmptyNode) Delete

func (n *RopeEmptyNode) Delete(offset int, count int) RopeNode

func (*RopeEmptyNode) GetLineEnd

func (n *RopeEmptyNode) GetLineEnd(line int) int

func (*RopeEmptyNode) GetLineNumber

func (n *RopeEmptyNode) GetLineNumber(offset int) int

func (*RopeEmptyNode) GetLineStart

func (n *RopeEmptyNode) GetLineStart(line int) int

func (*RopeEmptyNode) Insert

func (n *RopeEmptyNode) Insert(offset int, text string) RopeNode

func (*RopeEmptyNode) Kind

func (n *RopeEmptyNode) Kind() RopeNodeKind

func (*RopeEmptyNode) Length

func (*RopeEmptyNode) Length() int

func (*RopeEmptyNode) PrettyPrint

func (n *RopeEmptyNode) PrettyPrint(w io.Writer, indent string)

func (*RopeEmptyNode) Rebalance

func (n *RopeEmptyNode) Rebalance() RopeNode

func (*RopeEmptyNode) Runes

func (*RopeEmptyNode) Runes() []rune

func (*RopeEmptyNode) Split

func (n *RopeEmptyNode) Split(offset int) (RopeNode, RopeNode)

func (*RopeEmptyNode) String

func (*RopeEmptyNode) String() string

type RopeLeafNode

type RopeLeafNode struct {
	LineBreaks int
	// contains filtered or unexported fields
}

func (*RopeLeafNode) Delete

func (n *RopeLeafNode) Delete(offset int, count int) RopeNode

func (*RopeLeafNode) GetLineEnd

func (n *RopeLeafNode) GetLineEnd(line int) int

func (*RopeLeafNode) GetLineNumber

func (n *RopeLeafNode) GetLineNumber(offset int) int

func (*RopeLeafNode) GetLineStart

func (n *RopeLeafNode) GetLineStart(line int) int

func (*RopeLeafNode) Insert

func (n *RopeLeafNode) Insert(offset int, text string) RopeNode

func (*RopeLeafNode) Kind

func (n *RopeLeafNode) Kind() RopeNodeKind

func (*RopeLeafNode) Length

func (n *RopeLeafNode) Length() int

func (*RopeLeafNode) PrettyPrint

func (n *RopeLeafNode) PrettyPrint(w io.Writer, indent string)

func (*RopeLeafNode) Rebalance

func (n *RopeLeafNode) Rebalance() RopeNode

func (*RopeLeafNode) Runes

func (n *RopeLeafNode) Runes() []rune

func (*RopeLeafNode) Split

func (n *RopeLeafNode) Split(offset int) (RopeNode, RopeNode)

func (*RopeLeafNode) String

func (n *RopeLeafNode) String() string

type RopeNode

type RopeNode interface {
	Kind() RopeNodeKind
	Length() int
	String() string
	Runes() []rune
	Rebalance() RopeNode
	Split(offset int) (left RopeNode, right RopeNode)
	Insert(offset int, text string) RopeNode
	Delete(offset int, count int) RopeNode
	GetLineNumber(offset int) int
	GetLineStart(line int) int
	GetLineEnd(line int) int
	PrettyPrint(w io.Writer, indent string)
}

func Concat

func Concat(l RopeNode, r RopeNode) RopeNode

func New

func New(text string) RopeNode

func Replace

func Replace(n RopeNode, offset int, length int, replacement string) RopeNode

func Slice

func Slice(n RopeNode, offset int, count int) RopeNode

type RopeNodeKind

type RopeNodeKind int
const (
	RopeKindEmpty RopeNodeKind = iota
	RopeKindParent
	RopeKindLeaf
)

type RopeParentNode

type RopeParentNode struct {
	LineBreaks int
	// contains filtered or unexported fields
}

func (*RopeParentNode) Delete

func (n *RopeParentNode) Delete(offset int, count int) RopeNode

func (*RopeParentNode) GetLineEnd

func (n *RopeParentNode) GetLineEnd(line int) int

func (*RopeParentNode) GetLineNumber

func (n *RopeParentNode) GetLineNumber(offset int) int

func (*RopeParentNode) GetLineStart

func (n *RopeParentNode) GetLineStart(line int) int

func (*RopeParentNode) Insert

func (n *RopeParentNode) Insert(offset int, text string) RopeNode

func (*RopeParentNode) Kind

func (n *RopeParentNode) Kind() RopeNodeKind

func (*RopeParentNode) Length

func (n *RopeParentNode) Length() int

func (*RopeParentNode) PrettyPrint

func (n *RopeParentNode) PrettyPrint(w io.Writer, indent string)

func (*RopeParentNode) Rebalance

func (n *RopeParentNode) Rebalance() RopeNode

func (*RopeParentNode) Runes

func (n *RopeParentNode) Runes() []rune

func (*RopeParentNode) Split

func (n *RopeParentNode) Split(offset int) (RopeNode, RopeNode)

func (*RopeParentNode) String

func (n *RopeParentNode) String() string

type RopeReader

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

func NewReader

func NewReader(node RopeNode) *RopeReader

func (*RopeReader) ReadRune

func (r *RopeReader) ReadRune() (ch rune, size int, err error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳