概览
Wordy
是一个功能强大的文本处理器,为在String
对象中管理内容提供了一种简单的方法。
如何开始
- 复制
Source
文件夹的内容到您的项目中。
或者
- 使用
Wordy
Cocoapod
要求
- iOS 9及以上
- Xcode 9及以上
- Swift 4.1
用法
一切从一个Wordy
类开始。这是您进入该库提供所有工具的入口点。
文本效果
让我们从一个非常简单的文本效果示例开始
let filteredText = Wordy.effects(for: "Hi!")
.apply(effect: InversionEffect())
.result
print(filteredText) // "!iH"
它是这样工作的: Wordy.effects(for: _)
给你一个为你的源文本配置的 EffectManager
实例。然后,你可以应用一些效果,并通过 .result
调用检索最终文本。
在上面的示例中,InversionEffect
将应用于整个字符串。同时,你也可以将效果应用于特定的子串
let filteredText = Wordy.effects(for: "Hi!")
.apply(effect: InversionEffect(), startIndex: 0, endIndex: 1)
.result
print(filteredText) // "iH!"
你可以添加任意多个效果
let filteredText = Wordy.effects(for: "This text will be rotated")
.apply(effect: RotationEffect(rotation: .inverted))
.apply(effect: InversionEffect())
.result
print(filteredText) // "рǝʇɐʇоɹ ǝq llıм ʇxǝʇ sıɥʇ"
案例效果
由 CaseEffect
类表示。改变整个文本或特定位置的字母的大小写。
构造函数示例
CaseEffect(textCase: .firstUpperNextLower)
TextCase
是唯一设置,用于定义 CaseEffect
的行为。
旋转效果
由 RotationEffect
类表示。旋转字母。例如,
p
变成 d
和
h
变成 ɥ
。
RotationEffect
有两个可用的构造函数。构造函数的详细版本
RotationEffect(rotation: .inverted, caseSensitive: true)
第一个参数是一个 TextRotation
值,它定义了旋转符号的方式。
布尔类型的第二个参数定义旋转算法是否区分大小写。如果等于 false
,某些大写符号在旋转后可能变为小写。
第二个构造函数是第一个构造函数的简化版本
RotationEffect(rotation: .inverted)
默认情况下,它是区分大小写的。通常,除了需要更多灵活性之外,使用第二个构造函数通常是足够的。
逆转效果
由 InversionEffect
类表示。翻转文本从右到左,所以
Hi!
变成
!iH
InversionEffect
的构造函数非常简单,不需要任何参数
InversionEffect()
转写
转写示例
let transliteratedText = Wordy.transliterate(from: .russian, to: .english)
.result(for: "Привет!")
print(transliteratedText) // "Privet!", which means "Hi!"
目前支持的语言包括
- 英语
- 俄语
选项
文本大小写
TextCase
被用作CaseEffect
实例的设置。可用值有
allUpper
- 将整个文本转换为大写。allLower
- 将整个文本转换为小写。firstUpperNextLower
- 第一个字符大写,其余文本小写。firstLowerNextUpper
- 第一个字符小写,其余文本大写。alternating(firstUppercased: Bool)
:如果firstUppercased
为true
,奇数位字符大写,偶数位字符小写。否则,奇数位字符小写,偶数位字符大写。
文本旋转
TextRotation
定义字符旋转的条件。可用值
normal
:将所有字符旋转到正常位置。这意味着ʎ
会变为y
,而h
将保持h
。upsideDown
:将所有字符旋转到颠倒的位置。在这种情况下,y
将变为ʎ
,但ɥ
将保持不变。inverted
:将正常符号旋转的同时,旋转的符号变为正常。因此,y
变为ʎ
,而ɥ
将变为h
。
语言
Language
类型用于转写。可能的值
english
russian
插件
您可以在不修改库的情况下扩展 Wordy
的功能。无需发送拉取请求,只需创建自己的插件即可。
每个插件都是一个名为 Plugin
类的子类。请看下面的示例
class Repeat: Plugin {
override func result() -> String {
return self.sourceText
+ self.sourceText
}
}
这是一个重复源文本两次的插件。您需要实现的就是返回经过过滤的文本的 result()
方法,这是一个您应该在插件实现中放置逻辑的核心。要访问源文本,只需使用 self.sourceText
。
现在让我们尝试使用这个插件
let repeatedText = Wordy.plugin(Repeat.self, for: "Test.")
.result()
print(repeatedText) // "Test.Test."
如您所见,创建和使用 Wordy
插件非常简单。您可以将插件作为独立库发布,或者如果希望它被包含在库中,则作为拉取请求发送。
许可协议
Wordy
适用于 Apache 2.0 许可协议。请参阅 LICENSE 文件获取更多信息。