https://github.com/cypherpoet/unitintervalpropertywrapper
A Swift Property Wrapper for automatically clamping floating-point values within a closed range of [0,1].
https://github.com/cypherpoet/unitintervalpropertywrapper
input-validation property-wrappers swift swift-input-validation swift-package-manager swift-packages swift-property-wrapper-packages swift-property-wrappers swift-world-domination unit-intervals
Last synced: 4 months ago
JSON representation
A Swift Property Wrapper for automatically clamping floating-point values within a closed range of [0,1].
- Host: GitHub
- URL: https://github.com/cypherpoet/unitintervalpropertywrapper
- Owner: CypherPoet
- License: mit
- Created: 2021-04-09T19:08:33.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-05-14T22:02:22.000Z (about 4 years ago)
- Last Synced: 2025-02-18T12:45:00.984Z (4 months ago)
- Topics: input-validation, property-wrappers, swift, swift-input-validation, swift-package-manager, swift-packages, swift-property-wrapper-packages, swift-property-wrappers, swift-world-domination, unit-intervals
- Language: Swift
- Homepage: https://cypherpoet.github.io/swift-unit-interval-property-wrapper/
- Size: 2.21 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# UnitInterval: A Swift Property Wrapper
_A Swift Property Wrapper for automatically clamping floating-point values within a closed range of [0,1]._
## Installation
### Xcode Projects
Select `File` -> `Swift Packages` -> `Add Package Dependency` and enter `https://github.com/CypherPoet/UnitIntervalPropertyWrapper`.
### Swift Package Manager Projects
You can add `UnitIntervalPropertyWrapper` as a package dependency in your `Package.swift` file:
```swift
let package = Package(
//...
dependencies: [
.package(
url: "https://github.com/CypherPoet/UnitIntervalPropertyWrapper",
.upToNextMinor(from: "0.1.0")
),
],
//...
)
```From there, refer to `UnitIntervalPropertyWrapper` as a "target dependency" in any of _your_ package's targets that need it.
```swift
targets: [
.target(
name: "YourLibrary",
dependencies: [
"UnitIntervalPropertyWrapper",
],
...
),
...
]
```Then simply `import UnitIntervalPropertyWrapper` wherever you’d like to use it.
## Usage
**Basic Usage Example**:
```swift
import UnitIntervalPropertyWrapperstruct AwesomePhoto {
@UnitInterval
public var opacity: Double@UnitInterval
public var animationProgress: Double = 0.0
}var photo = AwesomePhoto(opacity: 100)
photo.opacity // 1.0
photo.animationProgress // 0.0photo.animationProgress = -2.2
photo.animationProgress // 0.0
```Also, feel free to use [this project's Xcode Playground](./Examples/Playgrounds/) to explore things further.
## Contributing
Contributions to `UnitIntervalPropertyWrapper` are most welcome. Check out some of the [issue templates](./.github/ISSUE_TEMPLATE/) for more info.
## 💻 Developing
### Requirements
- Xcode 12.5+ (Recommended)
### 📜 Generating Documentation
Documentation is generated by [Jazzy](https://github.com/realm/jazzy). Installation instructions can be found [here](https://github.com/realm/jazzy#installation), and as soon as you have it set up, docs can be generated simply by running `jazzy` from the command line.
📝 Note that this will only generate the `docs` folder for you to view locally. This folder is being ignored by `git`, as an [action](./.github/workflows/PublishDocumentation.yml) exists to automatically generate docs at the root level and serve them on the project's `gh-pages` branch.
## 🏷 License
`UnitIntervalPropertyWrapper` is available under the MIT license. See the [LICENSE file](./LICENSE) for more info.