// // Array+SwiftLint.swift // SwiftLint // // Created by Scott Hoyt on 1/11/16. // Copyright © 2016 Realm. All rights reserved. // import Foundation extension Array { static func array(of obj: Any?) -> [Element]? { if let array = obj as? [Element] { return array } else if let obj = obj as? Element { return [obj] } return nil } } extension Array where Element: NSTextCheckingResult { func ranges() -> [NSRange] { return map { $0.range } } } extension Array where Element: Equatable { var unique: [Element] { var uniqueValues = [Element]() for item in self where !uniqueValues.contains(item) { uniqueValues.append(item) } return uniqueValues } } extension Array { func group(by transform: (Element) -> U) -> [U: [Element]] { return reduce([:]) { dictionary, element in var dictionary = dictionary let key = transform(element) dictionary[key] = (dictionary[key] ?? []) + [element] return dictionary } } }