A block-based API for NSValueTransformer, with a growing collection of useful examples.
NSValueTransformer, while perhaps obscure to most iOS programmers, remains a staple of OS X development. Before Objective-C APIs got in the habit of flinging block parameters hither and thither with reckless abandon, NSValueTransformer was the go-to way to encapsulate mutation functionality --- especially when it came to Bindings.
NSValueTransformer is convenient to use but a pain to set up. To create a value transformer you have to create a subclass, implement a handful of required methods, and register a singleton instance by name.
TransformerKit breathes new life into NSValueTransformer by making them dead-simple to define and register:
NSString * const TTTCapitalizedStringTransformerName = @"TTTCapitalizedStringTransformerName"; [NSValueTransformerregisterValueTransformerWithName:TTTCapitalizedStringTransformerName transformedValueClass:[NSStringclass] returningTransformedValueWithBlock:^id(id value){return [value capitalizedString]}];TransformerKit pairs nicely with InflectorKit and FormatterKit, providing well-designed APIs for manipulating user-facing content.
TransformerKit also contains a growing number of convenient transformers that your apps will love and cherish:
- Capitalized
- UPPERCASE
- lowercase
- CamelCase
- llamaCase
- snake_case
- train-case
- esreveR* (Reverse)
- Rémövê Dîaçritics (Remove accents and combining marks)
- ट्रांस्लितेराते स्ट्रिंग (Transliterate to Latin)
- Any Valid ICU Transform*
- PNG Representation*
- JPEG Representation*
- GIF Representation (macOS)
- TIFF Representation (macOS)
- JSON Transformer*
- Base16 String Encode / Decode
- Base32 String Encode / Decode
- Base64 String Encode / Decode
- Base85 String Encode / Decode
- MD5, SHA-1, SHA-256, et al. Digests
* - Reversible
Mattt (@mattt)
TransformerKit is released under the MIT license. See the LICENSE file for more info.