https://github.com/fpg1503/caterpillar
🐛 Caterpillar: Type-safe date formats in Swift, no more "yyyy-MM-dd'T'HH:mm:ssZ"
https://github.com/fpg1503/caterpillar
cocoapods date date-format date-formatting swift swift-package-manager type-safe
Last synced: 11 months ago
JSON representation
🐛 Caterpillar: Type-safe date formats in Swift, no more "yyyy-MM-dd'T'HH:mm:ssZ"
- Host: GitHub
- URL: https://github.com/fpg1503/caterpillar
- Owner: fpg1503
- License: mit
- Created: 2017-02-08T11:29:42.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-02-08T23:03:49.000Z (over 9 years ago)
- Last Synced: 2025-05-27T15:51:09.104Z (12 months ago)
- Topics: cocoapods, date, date-format, date-formatting, swift, swift-package-manager, type-safe
- Language: Swift
- Homepage:
- Size: 28.3 KB
- Stars: 49
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Caterpillar
[](https://cocoapods.org/pods/Caterpillar)
[](https://raw.githubusercontent.com/fpg1503/Caterpillar/master/LICENSE)
[](https://github.com/apple/swift-package-manager)
[](https://github.com/Carthage/Carthage)
[](https://cocoapods.org/pods/Caterpillar)
[](https://travis-ci.org/fpg1503/Caterpillar/branches)
[](http://github.com/cookiecutter-swift/Framework)
🐛 Caterpillar: Type-safe date formats in Swift, no more `"yyyy-MM-dd'T'HH:mm:ssZ"`
- [Requirements](#requirements)
- [Usage](#usage)
- [Installation](#installation)
- [Acknowledgments](acknowledgments)
- [License](#license)
## Requirements
- iOS 8.0+ / Mac OS X 10.10+ / tvOS 9.0+ / watchOS 2.0+
- Xcode 8.0+
## Usage
Simply create a `Caterpillar` using `Caterpillar()` or `🐛()`, add the desired components and set it in your `DateFormatter`:
```swift
let format = 🐛()
.year(.fourDigits)
.separator(.dash)
.month(.zeroPaddedNumber)
.separator(.dash)
.day(.zeroPaddedNumber)
.string("T")
.hour(.zeroPaddedTwentyFourHour)
.separator(.colon)
.minute(.zeroPaddedNumber)
.separator(.colon)
.second(.zeroPaddedNumber)
.timezone(.RFC822)
let formatter = DateFormatter()
formatter.setDateFormat(format)
```
## Installation
### CocoaPods
[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command:
```bash
$ gem install cocoapods
```
> CocoaPods 1.1.0+ is required to build Caterpillar 1.0.0+.
To integrate Caterpillar into your Xcode project using CocoaPods, specify it in your `Podfile`:
```ruby
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'Caterpillar', '~> 1.0.0'
```
Then, run the following command:
```bash
$ pod install
```
### Carthage
[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.
You can install Carthage with [Homebrew](http://brew.sh/) using the following command:
```bash
$ brew update
$ brew install carthage
```
To integrate Caterpillar into your Xcode project using Carthage, specify it in your `Cartfile`:
```ogdl
github "Caterpillar/Caterpillar" ~> 1.0.0
```
### Swift Package Manager
To use Caterpillar as a [Swift Package Manager](https://swift.org/package-manager/) package just add the following in your Package.swift file.
``` swift
import PackageDescription
let package = Package(
name: "HelloCaterpillar",
dependencies: [
.Package(url: "https://github.com/fpg1503/Caterpillar.git", "1.0.0")
]
)
```
### Manually
If you prefer not to use either of the aforementioned dependency managers, you can integrate Caterpillar into your project manually.
#### Git Submodules
- Open up Terminal, `cd` into your top-level project directory, and run the following command "if" your project is not initialized as a git repository:
```bash
$ git init
```
- Add Caterpillar as a git [submodule](http://git-scm.com/docs/git-submodule) by running the following command:
```bash
$ git submodule add https://github.com/fpg1503/Caterpillar.git
$ git submodule update --init --recursive
```
- Open the new `Caterpillar` folder, and drag the `Caterpillar.xcodeproj` into the Project Navigator of your application's Xcode project.
> It should appear nested underneath your application's blue project icon. Whether it is above or below all the other Xcode groups does not matter.
- Select the `Caterpillar.xcodeproj` in the Project Navigator and verify the deployment target matches that of your application target.
- Next, select your application project in the Project Navigator (blue project icon) to navigate to the target configuration window and select the application target under the "Targets" heading in the sidebar.
- In the tab bar at the top of that window, open the "General" panel.
- Click on the `+` button under the "Embedded Binaries" section.
- You will see two different `Caterpillar.xcodeproj` folders each with two different versions of the `Caterpillar.framework` nested inside a `Products` folder.
> It does not matter which `Products` folder you choose from.
- Select the `Caterpillar.framework`.
- And that's it!
> The `Caterpillar.framework` is automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device.
#### Embeded Binaries
- Download the latest release from https://github.com/fpg1503/Caterpillar/releases
- Next, select your application project in the Project Navigator (blue project icon) to navigate to the target configuration window and select the application target under the "Targets" heading in the sidebar.
- In the tab bar at the top of that window, open the "General" panel.
- Click on the `+` button under the "Embedded Binaries" section.
- Add the downloaded `Caterpillar.framework`.
- And that's it!
## Acknowledgments
- [@leoformaggio](https://github.com/leoformaggio) for helping me come up with a name;
- [@corujautx](https://github.com/corujautx) for giving me hints on how to improve it when it was [just a gist](https://gist.github.com/fpg1503/f583ccfd8ac863b71c621843f5ca31b1);
## License
Caterpillar is released under the MIT license. See [LICENSE](https://github.com/fpg1503/Caterpillar/blob/master/LICENSE) for details.