diff options
Diffstat (limited to 'playlist-utils.js')
-rw-r--r-- | playlist-utils.js | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/playlist-utils.js b/playlist-utils.js index 92e62b1..f20ec98 100644 --- a/playlist-utils.js +++ b/playlist-utils.js @@ -104,6 +104,28 @@ function updateTrackFormat(track) { return Object.assign(defaultTrack, trackObj) } +function cloneGrouplike(grouplike) { + const newGrouplike = { + name: grouplike.name, + items: grouplike.items.map(item => { + if (isGroup(item)) { + return cloneGrouplike(item) + } else { + return { + name: item.name, + downloaderArg: item.downloaderArg + } + } + }) + } + + for (const item of newGrouplike.items) { + item[parentSymbol] = newGrouplike + } + + return newGrouplike +} + function filterTracks(grouplike, handleTrack) { // Recursively filters every track in the passed grouplike. The track-handler // function passed should either return true (to keep a track) or false (to @@ -468,6 +490,7 @@ function isTrack(obj) { module.exports = { parentSymbol, updatePlaylistFormat, updateGroupFormat, updateTrackFormat, + cloneGrouplike, filterTracks, flattenGrouplike, partiallyFlattenGrouplike, collapseGrouplike, |