Skip to content
/ rope Public

Ropes for Swift based on the article by Boehm, Atkinson, Plass

Notifications You must be signed in to change notification settings

gnuoyd/rope

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Rope

Ropes for Swift based on the article by Boehm, Atkinson, and Plass.

Terminology

zone: a rope may contain zero or more nested spans called zones. Sometimes, in my notes and code comments, I use parentheses to denote zones.

Note: zones used to be "extents".

zone controller: every zone has an associated controller that either modifies and performs or suppresses rope insertions, deletions, et cetera, that overlap the zone.

boundary: the distance from the interior of a zone to its exterior, or vice versa, is one boundary

step: the distance of one boundary or across one UTF-16 code unit is one step

unit: the distance across one UTF-16 code unit is one unit

jot: the distance of one step or across one index is a jot

dimensions: a bundle of a subrope's measurements in units, jots, steps, and boundaries are its dimensions

axis: an axis names one measurement in a subrope's dimensions; I may rename "axis" to "scale".

index: a labeled entity embedded in a rope, or a struct Rope.Index identifying such an entity by its label.

adjacent: two indices are adjacent if no steps separate them alias: two indices alias one another if they are adjacent label: an object that uniquely identifies an index expired: each embedded index holds a weak reference to its label; an index whose reference turns to nil is expired. Expired indices are cleaned up by occasional garbage-collecting sweeps.

About

Ropes for Swift based on the article by Boehm, Atkinson, Plass

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages