Compare commits

..

2 Commits

Author SHA1 Message Date
Sergio Martínez Portela
434fb8ab0e Support non-recursive dump_headline. 2022-06-19 21:46:39 +02:00
Sergio Martínez Portela
eb3c789fad Raise caution errors as NonReproducibleDocument. 2022-06-19 21:46:14 +02:00

View File

@ -102,6 +102,14 @@ NON_FINISHED_GROUPS = (type(None), dom.ListGroupNode, dom.ResultsDrawerNode, dom
FREE_GROUPS = (dom.CodeBlock,) FREE_GROUPS = (dom.CodeBlock,)
class NonReproducibleDocument(Exception):
"""
Exception thrown when a document would be saved as different contents
from what it's loaded from.
"""
pass
def get_tokens(value): def get_tokens(value):
if isinstance(value, Text): if isinstance(value, Text):
return value.contents return value.contents
@ -1665,7 +1673,7 @@ class OrgDoc:
yield from headline.get_code_snippets() yield from headline.get_code_snippets()
# Writing # Writing
def dump_headline(self, headline): def dump_headline(self, headline, recursive=True):
tags = "" tags = ""
if len(headline.shallow_tags) > 0: if len(headline.shallow_tags) > 0:
@ -1738,8 +1746,9 @@ class OrgDoc:
content = content[:-1] content = content[:-1]
yield content yield content
if recursive:
for child in headline.children: for child in headline.children:
yield from self.dump_headline(child) yield from self.dump_headline(child, recursive=recursive)
def dump(self): def dump(self):
lines = [] lines = []
@ -2008,7 +2017,7 @@ def loads(s, environment=BASE_ENVIRONMENT, extra_cautious=True):
context_last_line = None context_last_line = None
# print("---\n" + after_dump + "\n---") # print("---\n" + after_dump + "\n---")
raise Exception("Difference found between existing version and dumped") raise NonReproducibleDocument("Difference found between existing version and dumped")
return doc return doc