struct AudioPlayer: HtmlProducer { let playingText: String let items: [PlaylistItem] private var top: String { """
 
\(playingText)
""" } private var center: String { """
:: ::
""" } private var controls: String { """
""" } private var playlistStart: String { """
Playlist
""" } 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)
""" } } }