This pull request is being made to resolve an inconsistency found in the reverseChunked(by:) method located within the Collection extension. The intended functionality of the method is to divide a collection into chunks of a given size, where, if the collection is not evenly divisible, the first chunk will be smaller. Instead of this expected behavior, the current implementation produces incorrect results, with the first chunk not being the smallest when required and subsequent chunks varying incorrectly in size.
Example
Here are concrete examples that demonstrate the problem with the reverseChunked(by:) method's current implementation:
Example 1:
let collection = "1234567898765"
let chunks = collection.reverseChunked(by: 4)
// Expected Chunks: ["1", "2345", "6789", "8765"]
// Actual Chunks: ["1", "2345", "67898", "765"]
The changes introduced by this pull request will resolve the crashing issue in the PostgresNumeric(decimalString:) initializer. The crash is currently caused by the improper handling of string to numeric conversion when the string is split into chunks using the reverseChunked(by:) method.
Summary
This pull request is being made to resolve an inconsistency found in the reverseChunked(by:) method located within the Collection extension. The intended functionality of the method is to divide a collection into chunks of a given size, where, if the collection is not evenly divisible, the first chunk will be smaller. Instead of this expected behavior, the current implementation produces incorrect results, with the first chunk not being the smallest when required and subsequent chunks varying incorrectly in size.
Example
Here are concrete examples that demonstrate the problem with the reverseChunked(by:) method's current implementation:
Example 1:
Example 2:
Impact of Changes
The changes introduced by this pull request will resolve the crashing issue in the PostgresNumeric(decimalString:) initializer. The crash is currently caused by the improper handling of string to numeric conversion when the string is split into chunks using the reverseChunked(by:) method.