diff --git a/patacrep/content/__init__.py b/patacrep/content/__init__.py index a65b0525..5cae9d2d 100755 --- a/patacrep/content/__init__.py +++ b/patacrep/content/__init__.py @@ -185,6 +185,12 @@ class ContentList: continue yield from item.iter_errors() + def has_errors(self): + """Return `True` iff errors has been found.""" + for _ in self.iter_errors(): + return True + return False + class EmptyContentList(ContentList): """Empty content list: contain only errors.""" def __init__(self, *, errors): @@ -281,4 +287,6 @@ def process_content(content, config=None): contentlist.append_error(error) else: contentlist.append_error(ContentError(str(elem), "Unknown content type.")) + if contentlist.has_errors() and config['_error'] in ("failonsong", "failonbook"): + raise ContentError("Error while parsing the 'content' section of the songbook. Stopping as requested.") return contentlist diff --git a/patacrep/data/templates/songbook_model.yml b/patacrep/data/templates/songbook_model.yml index e1418e97..7ea6028a 100644 --- a/patacrep/data/templates/songbook_model.yml +++ b/patacrep/data/templates/songbook_model.yml @@ -99,6 +99,7 @@ schema: - type: //nil default: en: + _error: "fix" _datadir: [] # For test reasons book: lang: en