Build Status Platforms Documentation Matrix

Rearrange(重新排列)

Rearrange 是一个实用工具集合,旨在简化对 NSRangeIndexSetString.Index 的操作。

如果您需要使用 NSTextRange/UITextRange 或一般的 TextKit,请查看 Glyph

集成

Swift Package Manager(Swift 包管理器)

dependencies: [
    .package(url: "https://github.com/ChimeHQ/Rearrange")
]

类型

RangeMutation(范围突变)

这是一个结构体,封装了对 NSRange 的单个更改。 它对于序列化、排队或以其他方式存储更改并应用它们很有用。

您还可以使用此类来转换位置、NSRange,甚至 IndexSet。 这对于在文本更改时更新值非常方便。 这似乎很容易,但 RangeMutation 处理了大量边缘情况,包括使范围失效(例如完全删除)的突变。

扩展

NSRange

// convenience
static let zero: NSRange
static let notFound: NSRange
var max: Int

// shifting
func shifted(by delta: Int) -> NSRange?
func shifted(endBy delta: Int) -> NSRange?
func shifted(startBy delta: Int) -> NSRange?

// mutating
func clamped(to limit: Int) -> NSRange
func apply(_ change: RangeMutation) -> NSRange?

// working with Swift String
func range(in string: String) -> Range<String.Index>?

IndexSet

init(integersIn range: NSRange)
init(ranges: [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?

String(字符串)

subscript(range: Range<Int>) -> Substring?
subscript(range: NSRange) -> Substring?

贡献和协作

我很乐意收到您的来信! 问题或拉取请求都很棒。 Matrix spaceDiscord 都可用于实时帮助,但我强烈倾向于以文档的形式回答。 您也可以在 mastodon 上找到我。

我更喜欢协作,并且如果您有类似的项目,我很乐意找到合作的方式。

我更喜欢使用制表符进行缩进以提高可访问性。 但是,我宁愿您使用您想要的系统并创建一个 PR,也不要因为空格而犹豫不决。

通过参与此项目,您同意遵守贡献者行为准则