diff --git a/src/gkeepapi/node.py b/src/gkeepapi/node.py index 90d3678..30524db 100644 --- a/src/gkeepapi/node.py +++ b/src/gkeepapi/node.py @@ -1722,6 +1722,22 @@ def _get_text_node(self) -> ListItem | None: break return node + + def to_list(self) -> "List": + """Converts note to a list. + + Returns: + List node. + """ + node = List() + if self.title is not None: + node.title = self.title + + sort = random.randint(1000000000, 9999999999) # noqa: S311 + for text in self.text.split("\n"): + node.add(text, False, sort) + sort -= List.SORT_DELTA + return node @property def text(self) -> str: # noqa: D102 @@ -1842,6 +1858,25 @@ def key_func(x: ListItem) -> T: return T((int(x.sort),)) return sorted(items, key=key_func, reverse=True) + + def to_note(self) -> Note: + """Converts list to a note. + + Returns: + Note node. + """ + node = Note() + if self.title is not None: + node.title = self.title + + if self.text is not None: + node.text = "\n".join([n.text for n in self.items]) + else: + node.text = "" + return node + + + def _items(self, checked: bool | None = None) -> list[ListItem]: return [ diff --git a/test/test_nodes.py b/test/test_nodes.py index 0ea29ab..8a6b65e 100644 --- a/test/test_nodes.py +++ b/test/test_nodes.py @@ -506,7 +506,25 @@ def test_str(self): n.text = TEXT self.assertEqual("%s\n%s" % (TITLE, TEXT), str(n)) self.assertEqual(TEXT, n.text) + + def test_to_list(self): + n_note = node.Note() + TEXT = "a\nb\nc\nd\ne\nf" + n_note.text = TEXT + + n_list = node.List() + + n_list.add("a", sort=5) + n_list.add("b", sort=4) + n_list.add("c", sort=3) + n_list.add("d", sort=2) + n_list.add("e", sort=1) + n_list.add("f", sort=0) + + n = n_note.to_list() + + self.assertEqual(n_list.text, n.text) class ListTests(unittest.TestCase): def test_fields(self): @@ -623,6 +641,24 @@ def test_str(self): self.assertEqual(n_str, str(n)) self.assertEqual(n_text, n.text) + def test_to_note(self): + n_list = node.List() + + n_list.add("a", sort=5) + n_list.add("b", sort=4) + n_list.add("c", sort=3) + n_list.add("d", sort=2) + n_list.add("e", sort=1) + n_list.add("f", sort=0) + + n_note = node.Note() + + TEXT = "a\nb\nc\nd\ne\nf" + n_note.text = TEXT + + n = n_list.to_note() + + self.assertEqual(n_note.text, n.text) class ListItemTests(unittest.TestCase): def test_fields(self):