Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save JohnSundell/5f13c5014cbd0e86f4f8450f790e0834 to your computer and use it in GitHub Desktop.
Save JohnSundell/5f13c5014cbd0e86f4f8450f790e0834 to your computer and use it in GitHub Desktop.
Code sample #5 from my Medium post "Namespacing Swift code with nested types"
struct Post {
let id: Int
let author: User
let title: String
let text: String
}
extension Post {
class TextFormatter {
private let options: Set<Option>
init(options: Set<Option>) {
self.options = options
}
func formatTitle(for post: Post) -> String {
return post.title.formatted(withOptions: options)
}
func formatText(for post: Post) -> String {
return post.text.formatted(withOptions: options)
}
}
}
extension Post.TextFormatter {
enum Option {
case highlightNames
case highlightLinks
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment