Avoid line offset correction, as it's tricky to do it correctly.
All checks were successful
Testing / pytest (push) Successful in 26s
Testing / mypy (push) Successful in 1m6s
Testing / stability-extra-test (push) Successful in 31s

Note that we might want to restore the offset correction at some point to allow looking at the line positions after the
    load is completed.
This commit is contained in:
Sergio Martínez Portela 2024-07-30 17:35:28 +02:00
parent c7f78e0a6c
commit c5845d670f

View File

@ -820,17 +820,6 @@ class Headline:
raise NotImplementedError()
def update_raw_contents(self, new_contents):
# Clear elements
self.keywords = []
self.contents = []
self.list_items = []
self.table_rows = []
self.properties = []
self.structural = []
self.delimiters = []
self.scheduled = None
self.deadline = None
self.closed = None
reader = OrgDocReader(environment=self.doc.environment)
reader.read(new_contents)
@ -840,20 +829,19 @@ class Headline:
# Probably can be done by just adding the headlines to this one's children
raise NotImplementedError('new headlines on raw contents not supported yet. This probably should be simple, see comment on code.')
for kw in reader.keywords:
self.keywords.append(offset_linenum(self.start_line + 1, kw))
# Clear elements
self.keywords = reader.keywords
self.contents = reader.contents
self.list_items = reader.list_items
self.table_rows = reader.table_rows
self.properties = reader.properties
self.structural = reader.structural
self.delimiters = reader.delimiters
for content in reader.contents:
self.contents.append(offset_linenum(self.start_line + 1, content))
for list_item in reader.list_items:
self.list_items.append(offset_linenum(self.start_line + 1, list_item))
for struct_item in reader.structural:
self.structural.append(offset_linenum(self.start_line + 1, struct_item))
for prop in reader.properties:
self.properties.append(offset_linenum(self.start_line + 1, prop))
# TODO: Support update of scheduled/deadline/closed line
self.scheduled = None
self.deadline = None
self.closed = None
# Environment is not used, as it's known
@ -1074,20 +1062,6 @@ TableRow = collections.namedtuple(
),
)
ItemWithLineNum = Union[Keyword, RawLine, Property, ListItem, tuple[int, Any]]
def offset_linenum(offset: int, item: ItemWithLineNum) -> ItemWithLineNum:
if isinstance(item, tuple) and len(item) == 2 and isinstance(item[0], int):
return item
if isinstance(item, ListItem):
item.linenum += offset
return item
assert isinstance(item, (Keyword, RawLine, Property)), \
"Expected (Keyword|RawLine|Property), found {}".format(item)
return item._replace(linenum=item.linenum + offset)
# @TODO How are [YYYY-MM-DD HH:mm--HH:mm] and ([... HH:mm]--[... HH:mm]) differentiated ?
# @TODO Consider recurrence annotations
class Timestamp: