From 75a7b9d21af673e2acfed0acf1768e5d76d6c89a Mon Sep 17 00:00:00 2001 From: Florrie Date: Fri, 6 Jul 2018 13:08:14 -0300 Subject: cloneGrouplike --- playlist-utils.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'playlist-utils.js') 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, -- cgit 1.3.0-6-gf8a5