diff --git a/org_rw/org_rw.py b/org_rw/org_rw.py index 90ff004..e3534a8 100644 --- a/org_rw/org_rw.py +++ b/org_rw/org_rw.py @@ -457,20 +457,17 @@ class Headline: current_node = sublist indentation_tree.append(current_node) - while len(indentation_tree) > 0: - list_children = [ - c - for c in indentation_tree[-1].children - if isinstance(c, dom.ListItem) - ] - - if ((len(list_children) > 0) - and (len(list_children[-1].orig.indentation) - <= len(line.indentation))): - # No more breaking out of lists, it's indentation - # is less than ours - break - + while len(indentation_tree) > 0 and ( + (len(indentation_tree[-1].children) > 0) + and len( + [ + c + for c in indentation_tree[-1].children + if isinstance(c, dom.ListItem) + ][-1].orig.indentation + ) + > len(line.indentation) + ): rem = indentation_tree.pop(-1) if len(indentation_tree) == 0: indentation_tree.append(rem) @@ -488,15 +485,9 @@ class Headline: tree.append(current_node) # TODO: Allow indentation of this element inside others indentation_tree = [current_node] - elif not isinstance(current_node, dom.TableNode): - if isinstance(current_node, dom.ListGroupNode): - # As an item inside a list - list_node = current_node - current_node = dom.TableNode() - list_node.append(current_node) - indentation_tree.append(current_node) - else: - logging.debug("Expected a {}, found: {} on line {}".format(dom.TableNode, current_node, line.linenum)) + if not isinstance(current_node, dom.TableNode): + if not isinstance(current_node, dom.TableNode): + logging.warning("Expected a {}, found: {} on line {}".format(dom.TableNode, current_node, line.linenum)) # This can happen. Frequently inside a LogDrawer if len(line.cells) > 0 and len(line.cells[0]) > 0 and line.cells[0][0] == '-': @@ -1067,8 +1058,6 @@ def token_from_type(tok_type): class TimeRange: def __init__(self, start_time: OrgTime, end_time: OrgTime): - assert start_time is not None - assert end_time is not None self.start_time = start_time self.end_time = end_time diff --git a/tests/10-tables.org b/tests/10-tables.org index a473bed..d9d404b 100644 --- a/tests/10-tables.org +++ b/tests/10-tables.org @@ -16,18 +16,3 @@ | Content2-1 | Content2-2 | Content2-3 | Content after the table. -** Indented table -:PROPERTIES: -:ID: 10-table-test-id-02-indented -:CREATED: [2020-01-01 Wed 01:01] -:END: - -- This table is indented inside a list item. - - Item before in list - - | Header1 | Header2 | Header3 | - |------------+------------+------------| - | Content1-1 | Content1-2 | Content1-3 (last cell unclosed) - | Content2-1 | Content2-2 | Content2-3 | - - Item after in list -- This item happens after the indented table. diff --git a/tests/test_org.py b/tests/test_org.py index 1255067..8afd6a0 100644 --- a/tests/test_org.py +++ b/tests/test_org.py @@ -4,8 +4,7 @@ import unittest from datetime import date from datetime import datetime as DT -from org_rw import MarkerToken, MarkerType, Timestamp, dumps, load, loads, dom -import org_rw +from org_rw import MarkerToken, MarkerType, Timestamp, dumps, load, loads from utils.assertions import (BOLD, CODE, HL, ITALIC, SPAN, STRIKE, UNDERLINED, VERBATIM, WEB_LINK, Doc, Tokens) @@ -682,66 +681,3 @@ class TestSerde(unittest.TestCase): self.assertEqual(first_table[0].cells[1].strip(), 'Header2') self.assertEqual(first_table[0].cells[2].strip(), 'Header3') - hl = hl.children[0] - - tables = hl.get_tables() - first_table = tables[0] - self.assertEqual(len(first_table), 4) - - print(first_table[0]) - self.assertEqual(len(first_table[0].cells), 3) - self.assertEqual(first_table[0].cells[0].strip(), 'Header1') - self.assertEqual(first_table[0].cells[1].strip(), 'Header2') - self.assertEqual(first_table[0].cells[2].strip(), 'Header3') - - def test_tables_html_file_10(self): - with open(os.path.join(DIR, "10-tables.org")) as f: - doc = load(f) - - hl = doc.getTopHeadlines()[0] - - tree = hl.as_dom() - non_props = [ - item - for item in tree - if not isinstance(item, dom.PropertyDrawerNode) - ] - self.assertTrue(isinstance(non_props[0], dom.Text) - and isinstance(non_props[1], dom.TableNode) - and isinstance(non_props[2], dom.Text), - 'Expected ') - - - hl = hl.children[0] - tree = hl.as_dom() - non_props = [ - item - for item in tree - if not (isinstance(item, dom.PropertyDrawerNode) - or isinstance(item, dom.Text)) - ] - print_tree(non_props) - self.assertTrue(len(non_props) == 1, - 'Expected , with only (1) element') - - -def print_tree(tree, indentation=0, headline=None): - for element in tree: - print(" " * indentation * 2, "EL:", element) - if "children" in dir(element): - if len(element.children) > 0: - print_element(element.children, indentation + 1, headline) - print() - - elif "content" in dir(element): - for content in element.content: - print_element(content, indentation + 1, headline) - - -def print_element(element, indentation, headline): - if isinstance(element, org_rw.Link): - print(" " * indentation * 2, "Link:", element.get_raw()) - elif isinstance(element, str): - print(" " * indentation * 2, "Str[" + element.replace('\n', '') + "]", type(element)) - else: - print_tree(element, indentation, headline)