• Stars
    star
    848
  • Rank 51,881 (Top 2 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created over 11 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A block-based API for NSValueTransformer, with a growing collection of useful examples.

TransformerKit

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";

[NSValueTransformer registerValueTransformerWithName:TTTCapitalizedStringTransformerName
                               transformedValueClass:[NSString class]
                  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:

String Transformers

  • 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*

Image Transformers

  • PNG Representation*
  • JPEG Representation*
  • GIF Representation (macOS)
  • TIFF Representation (macOS)

Date Transformers

JSON Data Transformers

  • JSON Transformer*

Data Transformers (macOS)

  • Base16 String Encode / Decode
  • Base32 String Encode / Decode
  • Base64 String Encode / Decode
  • Base85 String Encode / Decode

Cryptographic Transformers (macOS)

  • MD5, SHA-1, SHA-256, et al. Digests

* - Reversible

Contact

Mattt (@mattt)

License

TransformerKit is released under the MIT license. See the LICENSE file for more info.

More Repositories

1

Ono

A sensible way to deal with XML & HTML for iOS & macOS
Objective-C
2,603
star
2

GroundControl

Remote configuration for iOS
Objective-C
1,946
star
3

CargoBay

The Essential StoreKit Companion
Objective-C
1,770
star
4

Euler

Swift Custom Operators for Mathematical Notation
Swift
1,156
star
5

AnimatedGIFImageSerialization

Complete Animated GIF Support for iOS, with Functions, NSJSONSerialization-style Class, and (Optional) UIImage Swizzling
Objective-C
1,087
star
6

Navajo

Password Validator & Strength Evaluator
Objective-C
836
star
7

SkyLab

Multivariate & A/B Testing for iOS and Mac
Objective-C
790
star
8

Orbiter

Push Notification Registration for iOS
Objective-C
673
star
9

NSEtcHosts

/etc/hosts with NSURLProtocol
Objective-C
666
star
10

Chroma-Hash

A colorful visualization of password field input
JavaScript
624
star
11

rack-scaffold

Automatically generate REST APIs from Core Data models
Ruby
528
star
12

sinatra-param

Parameter Validation & Type Coercion for Sinatra
Ruby
519
star
13

InflectorKit

Efficiently Singularize and Pluralize Strings
Objective-C
476
star
14

NSSortDescriptor-WilsonRank

The Correct Way To Rank Up/Down Voted Items
Objective-C
433
star
15

Antenna

Extensible Remote Logging for iOS
Objective-C
424
star
16

Godzippa

Godzippa! - GZip Compression / Decompression Category for NSData
Objective-C
424
star
17

CommonMarkAttributedString

Create NSAttributedStrings from Markdown Text
Swift
421
star
18

rack-push-notification

A Rack-mountable webservice for managing push notifications
Ruby
378
star
19

TTTLocalizedPluralString

NSLocalizedString with a Count Argument
Objective-C
378
star
20

CupertinoYankee

An NSDate Category With Locale-Aware Calculations for Beginning & End of Day, Week, Month, and Year
Objective-C
305
star
21

WebPImageSerialization

Complete WebP Support for iOS, with Functions, NSJSONSerialization-style Class, and (Optional) UIImage Swizzling
C
282
star
22

CHChromaHashView

A classic password visualization concept, ported to iOS
Objective-C
273
star
23

Xcode-Licensed-Templates

Minimal Xcode Templates for Open Source Developers
255
star
24

GeoJSONSerialization

Encode & Decode Between GeoJSON & MapKit Shapes
Objective-C
231
star
25

terminal-share

Command Line & Ruby Interface to Mac OS X Sharing Services
Objective-C
228
star
26

TTTRandomizedEnumerator

Mix things up with your collection classes with style and class (well, a category, but you get the idea).
Objective-C
223
star
27

BritishInvasion

Localise Your .m Files, For Queen And Country 🇬🇧
Objective-C
212
star
28

OpenAI

A Swift client for the OpenAI API.
Swift
181
star
29

AnyJSON

Encode / Decode JSON By Any Means Possible™
Objective-C
119
star
30

MsgPackSerialization

MsgPack Serialization for Objective-C
C
96
star
31

Morse.js

A jQuery Plugin to annotate text with Morse Code
JavaScript
95
star
32

rack-smart-app-banner

Rack middleware to automatically include code for Smart App Banners on iOS
Ruby
85
star
33

vCardSerialization

Encodes and decodes between vCard files and AddressBook records.
Objective-C
69
star
34

UIFontSerialization

Encode and decode between UIFont and Postscript font data
Objective-C
64
star
35

rack-http-logger

Log metrics from HTTP request parameters according to l2met conventions
Ruby
57
star
36

rack-passbook

Rack middleware that provides Passbook web service endpoints.
Ruby
52
star
37

rack-in-app-purchase

Rack middleware that manages products for in-app-purchases and verifies receipts.
Ruby
51
star
38

swift-package-registry-oas

OpenAPI Specification for proposed Swift Package Registry web service
Swift
41
star
39

core_data

Parse Core Data Model (.xcdatamodel) Files
Ruby
39
star
40

swift-registry

A reference implementation of the Swift Package Registry, written in Swift and using Git as a database / transparent log.
Swift
37
star
41

rack-subdomain

Rack middleware to transparently route requests with a subdomain to a specified path with substitutions
Ruby
37
star
42

rack-newsstand

Automatically generate webservice endpoints for Newsstand
Ruby
33
star
43

rack-remote-configuration

Serve property list or JSON configuration files
Ruby
24
star
44

commoditize

A command-line utility for macOS that mounts a Docker container image as an external disk image.
Shell
20
star
45

swift-package-sbom

A software bill of materials (SBoM) generator for Swift packages
Swift
17
star
46

vscode-unicorn

🦄💬 A Visual Studio Code extension that adds a status bar entry showing Unicode data for the currently selected character.
TypeScript
15
star
47

Sonic-Hash

A melodic Sonification of password field input
JavaScript
14
star
48

NFPA704View

UIView Subclass for NFPA 704 "Fire Diamonds"
Objective-C
13
star
49

swift-package-registry-codeartifact

A basic implementation of the Swift package registry interface that uses AWS CodeArtifact as a backend for package releases and assets.
TypeScript
10
star
50

rack-heroku-no-such-app

Rack middleware to prevent loading from `*.heroku.com` / `*.herokuapp.com` addresses
Ruby
9
star
51

glitz

Glitz adds ANSI-colorized glamour to your terminal output
Ruby
9
star
52

replicate-swift

Unofficial Swift client for the Replicate API
Swift
8
star
53

swift-package-serialization-lambda

Swift
7
star
54

cog-replicate-logo-generator

Python
5
star
55

rack-typekit

Rack middleware to automatically inject Typekit into webpages
Ruby
4
star
56

CycloneDX

Swift
4
star
57

swift-registry-benchmark-harness

A harness for benchmarking the performance of building a project with Swift Package Manager using the new package registry interface.
Ruby
4
star
58

documentation-block

[WIP] View symbol documentation for a file
TypeScript
3
star
59

llama.cpp

Port of Facebook's LLaMA model in C/C++
C
1
star