Skip to content

Releases: FlineDev/HandySwift

4.3.0

29 Oct 07:35
Compare
Choose a tag to compare
  • Adds mapKeys function to Dictionary type.
  • Migrates to Swift 6 for full concurrency checking. (Stay on version 4.2.0 if you are still using Xcode 15.)

Full Changelog: 4.2.0...4.3.0

4.2.0

14 Apr 17:21
Compare
Choose a tag to compare

Added

  • New String extension function tokenized(locale:) for creating search terms (learn more)
  • New String extension function matchesTokenizedPrefixes(in:locale:) for convenient fuzzy search (learn more)

4.1.0

29 Mar 20:05
Compare
Choose a tag to compare

Added

  • New advanced/reversed(byMonths:) and advanced/reversed(byYears:) for GregorianDay
  • New startOfMonth(timeZone:) and startOfYear(timeZone:) functions on GregorianDay
  • Added more tests to ensure some of the newer functionality continues to work in the future

Changed

  • Properties of GregorianDay and GregorianTimeOfDay are now variable & the types conform to Withable

Fixed

  • Fixed conversion of TimeInterval into Duration for fractional seconds
  • Fixed a build error when using delay(by:) due to ambiguity caused by an overload

4.0.1

25 Mar 22:13
Compare
Choose a tag to compare

Changed

  • Improved output on Duration.autoscaleFormatted() when the duration is exactly 0 (before: "???", now: "0s")

4.0.0

23 Mar 03:48
Compare
Choose a tag to compare

Added

  • New DocC-based documentation hosted on Swift Package Index
  • Extensively improved documentation for all types & functions, including usage examples
  • README now showcases the apps most of the code was extracted from (& is used in)
  • New "Extensions" DocC article highlighting the most used extension properties & functions
  • New "New Types" DocC article highlighting the most used type additions & global functions
  • New CaseIterable extension properties allCasesPrefixedByNil and allCasesSuffixedByNil
  • New Duration extensions adding minute/hour/days/weeks, conversion to a TimeInterval and more
  • New Float extension analogous to the existing Double extension for rounded values
  • New SymmetricKey extension making conversion to/from base64 encoded String easier
  • New AutoConforming typealias that adds Codable, Hashable, and Sendable conformance in one go
  • New Debouncer type making debouncing for search input in SwiftUI easy
  • New GregorianDay type for storing just the day part of a Date without time
  • New GreogorianTimeOfDay type for storing just the time part of a Date without the day
  • New OperatingSystem type with a OS typealias to specify different values based on the current OS

Changed

  • Big documentation clean-up & improvements
  • The minimum Swift version was bumped from 5.1 to 5.9 (Xcode 14.2+)

Deprecated

  • The HandyRegex type and all its functions are now marked as deprecated. A removal is not planned anytime soon as long as NSRegularExpression API is around. But I encourage you to migrate to Swifts new and very own Regex type.

Removed

  • The Unowned and Weak wrapper types were removed without substitution
  • Any dependency managers except Swift Package Manager were dropped (e.g. CocoaPods)
  • README no longer serves as the documentation, the docs are moved over to the Swift Package Index (see README)
  • Some APIs that are no longer needed because Swift has a comparable alternative were removed with a fix-it

Fixes

  • Unit tests & CI setup

Migrating from 3.x

This release is a breaking change.

If you were using Unowned or Weak, you can find & copy their implementation to your project from the old release here.

If you were using Regex, note that you will get errors because it was renamed to HandyRegex. But fix-its could not be provided because Swift now has its own Regex type. So you need to rename uses of Regex to HandyRegex manually.

Some more APIs were renamed or removed in favor of a new Swift feature that should be preferred. Fix-its are provided for all these cases. Most APIs remain unchanged but have much better documentation now. 🎉

3.4.0

28 Sep 11:49
Compare
Choose a tag to compare

Added

  • Added new convenience encrypt(key:) and decrypt(key:) functions to String type for platforms supporting CryptoKit. Uses AES.GCM algorithm for encryption.
    Author: Cihat Gündüz

3.3.0

16 Jan 09:41
Compare
Choose a tag to compare

Added

  • Added round(fractionDigits:rule:) & rounded(fractionDigits:rule:) methods to Double type.
    Author: Cihat Gündüz

3.2.1

03 Oct 11:45
Compare
Choose a tag to compare

Changed

  • Withable doesn't require an empty init() method anymore. Instead, it can be combined with any initializer. If you used the Foo { $0.bar = 5 } type of initializer, you will need to add ().with behind the type like so: Foo().with { $0.bar = 5 }.
    Issue: #49 | PR: #50 | Author: Cihat Gündüz
  • Improved with new removeAll method, conformance to BidirectionalCollection, ExpressibleByArrayLiteral and removal of newElement label on `insert.
    Author: Cihat Gündüz

Fixed

  • Made all functions accept throwing closures to allow wider usage cases for helper functions like .times etc.
    Author: Cihat Gündüz

3.2.0

27 Mar 12:15
Compare
Choose a tag to compare

Added

  • New DivisibleArithmetic protocol which easily extends average() to Collections of Double, Float and CGFloat.
    Issue: #36 | PR: #38 | Author: David Knothe
  • Make most of the API @inlinable for increased real-time performance.
    Issue: #40 | PR: #43 | Author: David Knothe

Changed

  • Allow Int.init?(randomBelow:) to use an arbitrary RandomNumberGenerator (instead of just the system one).
    PR: #44 | Author: David Knothe

3.1.0

27 Mar 12:14
Compare
Choose a tag to compare

Added

  • New Comparable.clamped(to:) and Comparable.clamp(to:) interfaces for any Comparable, e. g. Int.