import Foundation extension Content { private static let disallowedCharactersInIds = CharacterSet.alphanumerics.union(CharacterSet(charactersIn: "-")).inverted private static let disallowedCharactersInFileIds = CharacterSet.alphanumerics.union(CharacterSet(charactersIn: "-.")).inverted func isNewIdForTag(_ id: String) -> Bool { !tags.contains { $0.id == id } } func isNewIdForPage(_ id: String) -> Bool { !pages.contains { $0.id == id } } func isNewIdForPost(_ id: String) -> Bool { !posts.contains { $0.id == id } } func isValidIdForTagOrTagOrPost(_ id: String) -> Bool { id.rangeOfCharacter(from: Content.disallowedCharactersInIds) == nil } func isValidIdForFile(_ id: String) -> Bool { id.rangeOfCharacter(from: Content.disallowedCharactersInFileIds) == nil } }