curds: Allow passing values to node.sort_key()

So we can compare keys that have undergone the same transformation

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-06-02 20:51:27 -04:00
parent 53ae9ccb6c
commit ce7b7a4f67
4 changed files with 8 additions and 6 deletions

View File

@ -15,8 +15,9 @@ class LibraryPlaylist(playlist.Playlist):
def scan(self):
library_thread.push(self.thread_scan)
def sort_key(self):
return self.name.strip("/").split("/")
def sort_key(self, path=None):
key = self.name if path == None else path
return key.strip("/").split("/")
def thread_add(self, path):
self.add(tags.Track.lookup(path))

View File

@ -82,9 +82,8 @@ class PlaylistNode:
return self.append_child(child)
def lookup(self, name):
name = self.__normalize__(name)
for node in self.children:
if node.name == name:
if node.sort_key() == node.sort_key(name):
return node
return None
@ -113,8 +112,8 @@ class PlaylistNode:
nodes.pop(id(child), None)
self.children.clear()
def sort_key(self):
return sort.key(self.name)
def sort_key(self, name=None):
return sort.key(self.name if name == None else name)
def walk(self, root=False):
if self.parent != None or root == True:

View File

@ -57,6 +57,7 @@ class TestLibraryPlaylist(unittest.TestCase):
plist = library.LibraryPlaylist(test_library)
key = test_library.strip("/").split("/")
self.assertEqual(plist.sort_key(), key)
self.assertEqual(plist.sort_key("/a/b/c/"), [ "a", "b", "c" ])
def test_library_thread_reset(self):
self.assertTrue(library.library_thread.is_alive())

View File

@ -282,6 +282,7 @@ class TestPlaylistNode(unittest.TestCase):
self.assertEqual(a.sort_key(), [ "test", "node" ])
a.name = "A Test Node Cbä"
self.assertEqual(a.sort_key(), [ "test", "node", "cba" ])
self.assertEqual(a.sort_key("Test Node!"), [ "test", "node" ])
def test_node_walk(self):
root = node.PlaylistNode()