struct AudioPlayer: HtmlProducer {
let playlistText: String
let playingText: String
let items: [PlaylistItem]
private var top: String {
"""
"""
}
private var center: String {
"""
"""
}
private var controls: String {
"""
"""
}
private var playlistStart: String {
"""
"""
}
private var playlistEnd: String {
"""
"""
}
func populate(_ result: inout String) {
result += ""
result += top
result += center
result += controls
result += playlistStart
for item in items {
result += item.content
}
result += playlistEnd
result += "
"
}
struct PlaylistItem {
let index: Int
let image: String
let name: String
let album: String
let track: Int
let artist: String
var content: String {
"""
)
\(name)\(album) • \(artist)
"""
}
}
}