Rearrange is a collection of utilities for making it easier to work with
NSRange. It's particularly handy when used with the Cocoa text system.
Swift Package Manager:
dependencies: [ .package(url: "https://github.com/ChimeHQ/Rearrange.git") ]
This is a struct that encapsulates a single change to an
NSRange. It's useful for serializing, queuing, or otherwise storing changes and applying them.
You can also use this class to tranform individual points or other
NSRanges. This is handy for updating a set of stored
NSRanges as text is changed. This might seem easy, but there are a large number of edge cases that
RangeMutation handles, including mutations that invalidate (for example completely delete) a range.
// convenience static var zero: NSRange static var notFound: NSRange var max: Int // shifting public func shifted(by delta: Int) -> NSRange? public func shifted(startBy delta: Int) -> NSRange? public func shifted(endBy delta: Int) -> NSRange? // mutating public func clamped(to limit: Int) -> NSRange func apply(_ change: RangeMutation) -> NSRange?
mutating func insert(range: NSRange) mutating func insert(ranges: [NSRange]) mutating func remove(integersIn range: NSRange) var nsRangeView: [NSRange] func contains(integersIn range: NSRange) -> Bool func intersects(integersIn range: NSRange) -> Bool var limitSpanningRange: NSRange?
We'd love to hear from you! Get in touch via twitter, an issue, or a pull request.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.