RubyCocoaString 0.0.2

RubyCocoaString 0.0.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后一次发布2014年12月

Parker Wightman 维护。



  • 作者
  • Parker

作为分类实现的 NSMutableString 的字符串操作方法。

安装

两种选择之一

  1. CocoaPods 通过在您的 Podfile 中添加 pod 'RubyCocoaString',运行 pod install,并通过 #import <RubyCocoaString/NSString+RubyCocoaString.h> 导入头文件来 Import。
  2. NSString+RubyCocoaString.{h,m} 复制到您的项目中,并按需通过 #import "NSString+RubyCocoaString.h" 导入。

讨论

NSString 操作,虽然功能更加完善,但与 Ruby、Python 等现代脚本语言相比,仍然非常冗长且负担沉重。RubyCocoaString 将来自 Ruby 的字符串操作方法作为分类引入到 NSMutableString 中。尽可能保留了这些方法的 Ruby 实现的语义,当发现不一致性时,欢迎贡献和补丁。

根据需要应用了一些小的 Cocoa 习惯用语。例如,以下 Ruby 代码

"".empty?
"foo".end_with? "o"

在 Objective-C 中可用以下代码表示

[@"" isEmpty];
[@"foo" endsWith:@"o"];

一些方法也借鉴了 ActiveSupport,例如 blank?present?

覆盖

目前实现了以下 Ruby 字符串方法

字符串方法

ActiveSupport 方法

自定义方法

  • lowerCamelize - 与 camelize 相同,但首字母小写。例如,当 API 返回 foo_bar 并且您希望将其分配给 Objective-C 对象的 fooBar 属性时,非常有用。

(允许作为自定义方法对 Ruby 字符串方法进行有品味的变体,尤其是在 iOS/Mac 上,但这并不意味着这是一个包含所有可能的字符串方法的库。欢迎使用拉取请求!)

示例

[@"   foo bar   " strip];
// => @"foo bar"

["foo_bar" camelize];
// => @"FooBar"

["foo_bar" lowerCamelize];
// => "fooBar"

[@"FooBar" underscore];
// => "foo_bar"

["  \t\n" isBlank];
// => YES

[@"foo bar" endsWith:@"bar"];
// => YES

[@"this is just madness" gsub:@"just" withString:@"pure"];
// => @"this is pure madness"

[@"this is JUST PLAIN madness" gsub:@"[A-Z]+" 
                          withBlock:^(NSString *str, NSRange range) {
    return ([str isEqualToString:@"JUST"] ? @"pure" : @"awesome");
}];
// => @"this is pure awesome madness"

[@"foo" eachChar:^(NSString *ch) {
    NSLog(@"%@", ch);
}];
// => f
// => o
// => o

[@"telescope" reverse];
// => @"epocselet"

注意点

已知的实现困难

  • gsub 有一些高级的语义化使用情形,这些情形的实现较为困难,尽管大多数的使用情形在语义上与其 Ruby 对应项相同。它被用来实现许多 RubyCocoaString 方法。困难的部分在于 Ruby 和 Objective-C 在正则表达式语义和语法上的差异,以及什么被认为是 '匹配'。

贡献

总是在实现方法之前编写测试用例。非常容易,如果您以前从未在 Xcode 中编写过测试,请随时提问。

  1. 分叉它
  2. 创建您的功能分支(git checkout -b my-new-feature
  3. 编写测试用例,实现方法
  4. 更改 README 和其他相关文档,以反映您的更改
  5. 提交您的更改(git commit -am 'Added some feature'
  6. 推送到分支(git push origin my-new-feature
  7. 创建新的 Pull Request

其他一些注意事项

  • 请尽量将事物按字母顺序排列,包括 Xcode 文件导航器内测试用例的文件顺序,以及 NSString+RubyCocoaString.{h,m} 中的头文件和实现文件中的方法。
  • 这是一个适用于刚接触开源社区的程序员参入的最佳库,请不要犹豫通过 issues 贡献或提问,特别是如果您是 Xcode 测试的新手。我是一个好人哦 :-)

贡献者

Parker Wightman (@parkerwightman)