Good catch - it's because while in the case of things like enums, the unknown values are genuinely undocumented and should only be an escape hatch, but in the case of the content types, there are genuine other values users might want to provide (like application/*) that are not generated.
So while "undocumented" is meant to convey that it shouldn't be used unless you really know what you're doing, "other" is less negative to reflect that there might be genuine cases of passing it without it being considered an anti-pattern or a workaround.
extension Array {
/// Returns the array sorted by the quality value, highest quality first.
public func sortedByQuality<T>() -> [AcceptHeaderContentType<T>] where Element == Acceptable.AcceptHeaderContentType<T>, T : Acceptable.AcceptableProtocol
}
It's interesting, so .sortedByQuality() returns highest quality first (descending order), but .sorted(by: \.quality) returns the lowest quality first (ascending order).
Ooh, yeah, that's a good catch! Can sortedByQuality() just be removed, in preference to the more generic sorted(by:) (with an optional .reversed() as needed)? I suspect the runtime performance difference is negligible. It might be a bit less discoverable, but then again maybe not - Array's sorting methods are pretty well known, I have to think.
Ah sorry I was mistaken - QualityValue does not conform to Comparable, so people won't be able to write .sorted(by: \.quality) (they would need to write .sorted(by: \.quality.doubleValue), which is less likely to be confusing).
The reason was exactly this - because the default sort is NOT what most people want. That's why we simply propose a dedicated method that returns the array sorted the way that is most useful.
The review period for this proposal is now over. There were questions around the naming of "other" content types and the sorting of headers by their QualityValue (and its conformance to Comparable), which have been answered with no further changes.
The proposal is accepted. SOAR-0003 is now Ready for Implementation .