struct ContentButtons { struct Item { let icon: PageIcon let filePath: String? let text: String let downloadFileName: String? let onClickText: String? init(icon: PageIcon, filePath: String?, text: String, downloadFileName: String? = nil, onClickText: String? = nil) { self.icon = icon self.filePath = filePath self.text = text self.downloadFileName = downloadFileName self.onClickText = onClickText } } let items: [Item] init(items: [Item]) { self.items = items } var content: String { var result = "
" return result } private func addButton(of item: Item, to result: inout String) { let downloadText = item.downloadFileName.map { " download='\($0)'" } ?? "" let linkText = item.filePath.map { " href='\($0)'" } ?? "" let onClickText = item.onClickText.map { " onClick='\($0)'" } ?? "" result += "" result += "\(item.text)" result += "" } }