| LEFT | RIGHT | 
|---|
| 1 // | 1 // | 
| 2 // FavIcon | 2 // FavIcon | 
| 3 // Copyright © 2016 Leon Breedt | 3 // Copyright © 2016 Leon Breedt | 
| 4 // | 4 // | 
| 5 // Licensed under the Apache License, Version 2.0 (the "License"); | 5 // Licensed under the Apache License, Version 2.0 (the "License"); | 
| 6 // you may not use this file except in compliance with the License. | 6 // you may not use this file except in compliance with the License. | 
| 7 // You may obtain a copy of the License at | 7 // You may obtain a copy of the License at | 
| 8 // | 8 // | 
| 9 // http://www.apache.org/licenses/LICENSE-2.0 | 9 // http://www.apache.org/licenses/LICENSE-2.0 | 
| 10 // | 10 // | 
| 11 // Unless required by applicable law or agreed to in writing, software | 11 // Unless required by applicable law or agreed to in writing, software | 
| 12 // distributed under the License is distributed on an "AS IS" BASIS, | 12 // distributed under the License is distributed on an "AS IS" BASIS, | 
| 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
| 14 // See the License for the specific language governing permissions and | 14 // See the License for the specific language governing permissions and | 
| 15 // limitations under the License. | 15 // limitations under the License. | 
| 16 // | 16 // | 
| 17 | 17 | 
| 18 import FavIcon.XMLDocument | 18 import FavIcon.XMLDocument | 
| 19 import Foundation |  | 
| 20 | 19 | 
| 21 /// Represents an icon size. | 20 /// Represents an icon size. | 
| 22 struct IconSize: Hashable, Equatable { | 21 struct IconSize: Hashable, Equatable { | 
| 23     var hashValue: Int { | 22     var hashValue: Int { | 
| 24         return width.hashValue ^ height.hashValue | 23         return width.hashValue ^ height.hashValue | 
| 25     } | 24     } | 
| 26 | 25 | 
| 27     static func == (lhs: IconSize, rhs: IconSize) -> Bool { | 26     static func == (lhs: IconSize, rhs: IconSize) -> Bool { | 
| 28         return lhs.width == rhs.width && lhs.height == rhs.height | 27         return lhs.width == rhs.width && lhs.height == rhs.height | 
| 29     } | 28     } | 
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 308         for size in string.components(separatedBy: .whitespaces) { | 307         for size in string.components(separatedBy: .whitespaces) { | 
| 309             let parts = size.components(separatedBy: "x") | 308             let parts = size.components(separatedBy: "x") | 
| 310             if parts.count != 2 { continue } | 309             if parts.count != 2 { continue } | 
| 311             if let width = Int(parts[0]), let height = Int(parts[1]) { | 310             if let width = Int(parts[0]), let height = Int(parts[1]) { | 
| 312                 sizes.append(IconSize(width: width, height: height)) | 311                 sizes.append(IconSize(width: width, height: height)) | 
| 313             } | 312             } | 
| 314         } | 313         } | 
| 315     } | 314     } | 
| 316     return sizes | 315     return sizes | 
| 317 } | 316 } | 
| LEFT | RIGHT | 
|---|