Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cellular/cellular-swift

Collection of µ-frameworks and utility classes/extensions used in CELLULAR swift projects.
https://github.com/cellular/cellular-swift

cocoapods ios linux macos swift swift-package-manager tvos watchos xcode

Last synced: about 23 hours ago
JSON representation

Collection of µ-frameworks and utility classes/extensions used in CELLULAR swift projects.

Awesome Lists containing this project

README

        






CELLULAR


A collection of utilities that we share across swift-based projects at CELLULAR.

It is a standalone module with no external dependencies.



Build Status


Codecov


CocoaPods Compatible


Swift Version

Platform

## Features

### Codable

There are several extensions on `KeyedDecodingContainer`.
Most of which are heavily inspired by [Unbox](https://github.com/JohnSundell/Unbox).

#### THE PLANET

Throughout the `Codable` examples, the following struct is used:

```swift
import CELLULAR

public struct Planet: Codable {

public var discoverer: String

public var hasRingSystem: Bool

public var numberOfMoons: Int

public var distanceFromSun: Float // 10^6 km

public var surfacePressure: Double? // bars

public var atmosphericComposition: [String]
```

##### 1. Allows `Foundation` types to be inferred on value assignment

```swift
public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)

discoverer = try container.decode(forKey: .discoverer)
// equals: discoverer = try decode(String.self, forKey: key)

hasRingSystem = try container.decode(forKey: .hasRingSystem)
// equals: hasRingSystem = try decode(Bool.self, forKey: key)

numberOfMoons = try container.decode(forKey: .numberOfMoons)
// equals: numberOfMoons = try decode(Int.self, forKey: key)

distanceFromSun = try container.decode(forKey: .distanceFromSun)
// equals: distanceFromSun = try decode(Float.self, forKey: key)
```

##### 2. Even `Optional` holding these types may be inferred

```swift
surfacePressure = try container.decode(forKey: .surfacePressure)
// equals: surfacePressure = try decodeIfPresent(Double.self, forKey: key)
```

##### 3. Allows instances in collections to fail decoding

```swift
atmosphericComposition = try container.decode(forKey: .atmosphericComposition, allowInvalidElements: true) ?? []
}
}
```

## Locking

TODO

## Storyboard

TODO

## Requirements

- iOS 11.0+ | watchOS 5.0+ | tvOS 11.0+ | macOS 10.14+ | Ubuntu 14.04+
- Swift 5.0+

## Installation

### [Swift Package Manager](https://swift.org/package-manager/)

Once you have your Swift package set up, adding CELLULAR as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.

```swift
dependencies: [
.package(url: "https://github.com/cellular/cellular-swift.git", from: "6.0.1")
]
```

### [CocoaPods](https://cocoapods.org)

CocoaPods is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate CELLULAR into your Xcode project using CocoaPods, specify it in your Podfile:

```ruby
pod 'CELLULAR'
```

## License

CELLULAR is released under the MIT license. [See LICENSE](https://github.com/cellular/cellular-swift/blob/master/LICENSE) for details.