document

package module
v0.0.16 Latest Latest
Warning

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

Go to latest
Published: Mar 29, 2023 License: MIT Imports: 3 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Apply

func Apply(id, str string, offset int, repl []Replacement) string

func As added in v0.0.4

func As[T any](v any) T

func Changes added in v0.0.12

func Changes(prefix string, ops OpTree) string

func Isa added in v0.0.4

func Isa[T any](v any) bool

func Len added in v0.0.13

func Len(op Operation) int

func LenTree added in v0.0.14

func LenTree(tree OpTree) int

func OpString added in v0.0.8

func OpString(tree OpTree, verbose bool) string

func Overlaps added in v0.0.13

func Overlaps(op1 Operation, op2 Operation) bool

func OverlapsRange added in v0.0.13

func OverlapsRange(op1 Operation, offset, len int) bool

func Owner added in v0.0.13

func Owner(op Operation) string

func RangesOverlap added in v0.0.13

func RangesOverlap(off1, len1, off2, len2 int) bool

func ReplEnd added in v0.0.13

func ReplEnd(op Operation) int

func ReplOffset added in v0.0.13

func ReplOffset(op Operation) int

func SplitNew added in v0.0.4

func SplitNew(tree OpTree, offset int) (OpTree, OpTree)

SplitNew the tree's new text at an offset

func SplitOnMarker added in v0.0.3

func SplitOnMarker(tree OpTree, name string) (OpTree, OpTree)

func SplitOp added in v0.0.13

func SplitOp(op Operation, split int) (Operation, Operation)

func Width added in v0.0.14

func Width(repl []Replacement) int

Types

type DeleteOp added in v0.0.4

type DeleteOp struct {
	Id   ReplId // "" means original text
	Text string
}

func (*DeleteOp) CopyWith added in v0.0.13

func (d *DeleteOp) CopyWith(offset int, text string) Operation

func (*DeleteOp) GetId added in v0.0.13

func (d *DeleteOp) GetId() ReplId

func (*DeleteOp) GetText added in v0.0.4

func (d *DeleteOp) GetText() string

func (*DeleteOp) Len added in v0.0.13

func (d *DeleteOp) Len() int

func (*DeleteOp) Measure added in v0.0.4

func (d *DeleteOp) Measure() Measure

func (*DeleteOp) Merge added in v0.0.4

func (d *DeleteOp) Merge(m *Merger) bool

func (*DeleteOp) OpString added in v0.0.4

func (d *DeleteOp) OpString(offset int, verbose bool) string

func (*DeleteOp) Overlaps added in v0.0.13

func (d *DeleteOp) Overlaps(offset1, del *DeleteOp) bool

func (*DeleteOp) OverlapsRange added in v0.0.13

func (d *DeleteOp) OverlapsRange(offset2, len int) bool

func (*DeleteOp) String added in v0.0.4

func (d *DeleteOp) String() string

type Document added in v0.0.3

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

func NewDocument added in v0.0.4

func NewDocument(text ...string) *Document

func (*Document) Apply added in v0.0.3

func (d *Document) Apply(id string, offset int, edits []Replacement)

func (*Document) Changes added in v0.0.8

func (d *Document) Changes(prefix string) string

func (*Document) Copy added in v0.0.3

func (d *Document) Copy() *Document

func (*Document) Edits added in v0.0.3

func (d *Document) Edits() []Replacement

append Edits that restore the original document

func (*Document) Freeze added in v0.0.3

func (d *Document) Freeze() *Document

func (*Document) GetOps added in v0.0.14

func (d *Document) GetOps() OpTree

func (*Document) Mark added in v0.0.12

func (d *Document) Mark(name string, offset int)

func (*Document) Merge added in v0.0.3

func (d *Document) Merge(b *Document)

Merge another version of the original document into this one

func (*Document) NewMerger added in v0.0.13

func (d *Document) NewMerger() *Merger

func (*Document) OpString added in v0.0.4

func (d *Document) OpString(verbose bool) string

func (*Document) OriginalString added in v0.0.3

func (d *Document) OriginalString() string

string for the original document

func (*Document) Replace added in v0.0.3

func (d *Document) Replace(peerParent string, replOffset, start, length int, str string)

func (*Document) ReverseEdits added in v0.0.3

func (d *Document) ReverseEdits() []Replacement

append edits that restore the original document

func (*Document) Reversed added in v0.0.14

func (d *Document) Reversed(oldBase, newBase string) *Document

insert <--> delete newBase ops are transformed to "" "" ops are transformed to oldBase

func (*Document) SetOps added in v0.0.14

func (d *Document) SetOps(newOps OpTree)

func (*Document) Simplify added in v0.0.8

func (d *Document) Simplify()

remove non-source deletes

func (*Document) SplitOnMarker added in v0.0.3

func (d *Document) SplitOnMarker(name string) (OpTree, OpTree)

func (*Document) String added in v0.0.3

func (d *Document) String() string

string for the new document

type InsertOp added in v0.0.5

type InsertOp struct {
	Id ReplId // ID of the peerParent block, for ordering, "" is original text
	//PrevId     string // the previous text -- could be an insert or a delete
	//PrevOffset int
	//PrevBefore bool // whether or not the previous text lies before this insert
	Text string
}

func (*InsertOp) CopyWith added in v0.0.13

func (i *InsertOp) CopyWith(offset int, text string) Operation

func (*InsertOp) GetId added in v0.0.13

func (i *InsertOp) GetId() ReplId

func (*InsertOp) GetText added in v0.0.5

func (i *InsertOp) GetText() string

func (*InsertOp) Measure added in v0.0.5

func (i *InsertOp) Measure() Measure

func (*InsertOp) Merge added in v0.0.5

func (i *InsertOp) Merge(m *Merger) bool

func (*InsertOp) OpString added in v0.0.5

func (i *InsertOp) OpString(offset int, verbose bool) string

func (*InsertOp) String added in v0.0.5

func (i *InsertOp) String() string

type MarkerOp added in v0.0.5

type MarkerOp struct {
	Names Set[string]
}

func (*MarkerOp) CopyWith added in v0.0.13

func (m *MarkerOp) CopyWith(offset int, text string) Operation

func (*MarkerOp) GetId added in v0.0.13

func (m *MarkerOp) GetId() ReplId

func (*MarkerOp) GetText added in v0.0.5

func (m *MarkerOp) GetText() string

func (*MarkerOp) Measure added in v0.0.5

func (m *MarkerOp) Measure() Measure

func (*MarkerOp) Merge added in v0.0.5

func (opA *MarkerOp) Merge(m *Merger) bool

func (*MarkerOp) OpString added in v0.0.5

func (m *MarkerOp) OpString(offset int, verbose bool) string

func (*MarkerOp) String added in v0.0.5

func (m *MarkerOp) String() string

type Measure added in v0.0.4

type Measure struct {
	Width   int
	Markers Set[string]
}

type Merger added in v0.0.8

type Merger struct {
	Swapped              bool
	OpA, OpB             Operation
	Result, TreeA, TreeB ft.FingerTree[OpMeasurer, Operation, Measure]
	BaseEdits            map[string]ft.FingerTree[OpMeasurer, Operation, Measure]
	ReplMap              map[ReplId]Operation
	Shared               Set[string]
	Used                 Set[ReplId]
	Marked               Set[string]
	// contains filtered or unexported fields
}

type OpMeasurer added in v0.0.4

type OpMeasurer bool

func (OpMeasurer) Identity added in v0.0.4

func (m OpMeasurer) Identity() Measure

func (OpMeasurer) Measure added in v0.0.4

func (m OpMeasurer) Measure(op Operation) Measure

func (OpMeasurer) Sum added in v0.0.4

func (m OpMeasurer) Sum(a Measure, b Measure) Measure

type OpTree added in v0.0.6

func RemoveMarker added in v0.0.3

func RemoveMarker(tree OpTree, name string) OpTree

type Operation added in v0.0.4

type Operation interface {
	OpString(offset int, verbose bool) string
	GetId() ReplId
	GetText() string
	CopyWith(offset int, text string) Operation
	Measure() Measure
	Merge(m *Merger) bool
	fmt.Stringer
}

type RangeMeasurer added in v0.0.13

type RangeMeasurer bool

func (RangeMeasurer) Identity added in v0.0.13

func (m RangeMeasurer) Identity() TextRange

func (RangeMeasurer) Measure added in v0.0.13

func (m RangeMeasurer) Measure(r TextRange) TextRange

func (RangeMeasurer) Sum added in v0.0.13

func (m RangeMeasurer) Sum(m1, m2 TextRange) TextRange

type ReplId added in v0.0.13

type ReplId struct {
	Owner      string
	ReplOffset int
}

a unique id for an insert or delete the parentId of the block and the offset within the concatenation of the replacments

type ReplMergeState added in v0.0.13

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

type Replacement

type Replacement struct {
	Offset int    `json:"offset"`
	Length int    `json:"length"`
	Text   string `json:"text"`
}

type Set added in v0.0.2

type Set[T comparable] map[T]bool

func NewSet added in v0.0.3

func NewSet[T comparable](elements ...T) Set[T]

func (Set[T]) Add added in v0.0.3

func (s Set[T]) Add(op T) Set[T]

func (Set[T]) Compliment added in v0.0.13

func (s Set[T]) Compliment(s2 Set[T])

func (Set[T]) Copy added in v0.0.4

func (s Set[T]) Copy() Set[T]

func (Set[T]) Has added in v0.0.3

func (s Set[T]) Has(op T) bool

func (Set[T]) IsEmpty added in v0.0.8

func (s Set[T]) IsEmpty() bool

func (Set[T]) Merge added in v0.0.3

func (s Set[T]) Merge(s2 Set[T]) Set[T]

func (Set[T]) Remove added in v0.0.11

func (s Set[T]) Remove(op T) Set[T]

func (Set[T]) ToSlice added in v0.0.8

func (s Set[T]) ToSlice() []T

func (Set[T]) Union added in v0.0.3

func (s Set[T]) Union(s2 Set[T]) Set[T]

type TextRange added in v0.0.13

type TextRange struct {
	Offset int
	Length int
}

func RangeFor added in v0.0.13

func RangeFor(op Operation) TextRange

func (TextRange) End added in v0.0.13

func (r TextRange) End() int

func (TextRange) Overlaps added in v0.0.13

func (r TextRange) Overlaps(op Operation) bool

Jump to

Keyboard shortcuts

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