A percentage type for Swift
A percentage type for Swift
Makes percentages more readable and type-safe, for example, for APIs that currently accept a fraction
Double.
-.opacity(0.45) +.opacity(45%)
Add the following to
Package.swift:
.package(url: "https://github.com/sindresorhus/Percentage", from: "1.1.0")
See the source for docs.
import Percentage10% + 5.5% //=> 15.5%
-10% / 2 //=> -5%
(40% + 93%) * 3 //=> 399%
50% * 50% //=> 25%
30% > 25% //=> true
50%.of(200) //=> 100
Percentage(50) //=> 50%
Percentage(fraction: 0.5) //=> 50%
50%.fraction //=> 0.5
10%.rawValue //=> 10
print("(1%)") //=> "1%"
Percent.random(in: 10%...20%) //=> "14.3%"
The type conforms to
Hashable,
Codable,
RawRepresentable,
Comparable,
ExpressibleByFloatLiteral,
ExpressibleByIntegerLiteral,
Numeric, and supports all the arithmetic operators.
The percentage value is encoded as a single value:
struct Foo: Codable { let alpha: Percentage }let foo = Foo(alpha: 1%) let data = try! JSONEncoder().encode(foo) let string = String(data: data, encoding: .utf8)!
print(string) //=> "{"alpha":1}"
No, but you can still use Swift Package Manager for this package even though you mainly use Carthage or CocoaPods.