Skip to content

Commit d4dd748

Browse files
committed
Refactor CocoaPods acknowledgements file parsing
1 parent 67201b9 commit d4dd748

1 file changed

Lines changed: 12 additions & 10 deletions

File tree

Sources/AcknowList/AcknowPodDecoder.swift

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,31 +35,33 @@ open class AcknowPodDecoder: AcknowDecoder {
3535
*/
3636
public func decode(from data: Data) throws -> AcknowList {
3737
let rootDictionary = try PropertyListSerialization.propertyList(from: data, format: nil) as? [String: AnyObject]
38-
let preferenceSpecifiers = rootDictionary?["PreferenceSpecifiers"] as? [AnyObject]
39-
let headerItem = preferenceSpecifiers?.first as? [String: String]
40-
let footerItem = preferenceSpecifiers?.last as? [String: String]
38+
guard let preferenceSpecifiers = rootDictionary?["PreferenceSpecifiers"] as? [[String: String]] else {
39+
return AcknowList(headerText: nil, acknowledgements: [], footerText: nil)
40+
}
41+
42+
let headerItem = preferenceSpecifiers.first
43+
let footerItem = preferenceSpecifiers.last
4144
let headerText = headerItem?["FooterText"]
4245
let footerText = footerItem?["FooterText"]
4346

4447
// Remove the header and footer
45-
let ackPreferenceSpecifiers = preferenceSpecifiers?.filter { item in
48+
let ackPreferenceSpecifiers = preferenceSpecifiers.filter { item in
4649
guard let headerItem = headerItem,
47-
let footerItem = footerItem,
48-
let item = item as? [String: String] else {
50+
let footerItem = footerItem else {
4951
return false
5052
}
5153

5254
return item != headerItem && item != footerItem
53-
} ?? []
55+
}
5456

5557
let acknowledgements: [Acknow] = ackPreferenceSpecifiers.compactMap { preferenceSpecifier in
56-
guard let title = preferenceSpecifier["Title"] as! String?,
57-
let text = preferenceSpecifier["FooterText"] as! String? else {
58+
guard let title = preferenceSpecifier["Title"],
59+
let text = preferenceSpecifier["FooterText"] else {
5860
return nil
5961
}
6062

6163
let textWithoutNewlines = AcknowParser.filterOutPrematureLineBreaks(text: text)
62-
return Acknow(title: title, text: textWithoutNewlines, license: preferenceSpecifier["License"] as? String)
64+
return Acknow(title: title, text: textWithoutNewlines, license: preferenceSpecifier["License"])
6365
}
6466

6567
return AcknowList(headerText: headerText, acknowledgements: acknowledgements, footerText: footerText)

0 commit comments

Comments
 (0)