From 911e10325e36ca880af2bb3ae7d7227fba7ed55a Mon Sep 17 00:00:00 2001 From: Geoffrey Poore Date: Thu, 26 Dec 2019 19:22:16 -0600 Subject: [PATCH] AST walking code no longer assumes that dict nodes have t (type) keys, fixing incompatibility with nodes generated by citations (#12) --- codebraid/converters/pandoc.py | 14 +++++++++++--- codebraid/version.py | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/codebraid/converters/pandoc.py b/codebraid/converters/pandoc.py index 132a5f2..981cd55 100644 --- a/codebraid/converters/pandoc.py +++ b/codebraid/converters/pandoc.py @@ -482,10 +482,14 @@ def walk_node_list(node_list): if isinstance(obj, list): yield from walk_node_list(obj) elif isinstance(obj, dict): + try: + node_type = obj['t'] + except KeyError: + continue yield (obj, node_list, index) obj_contents = obj.get('c', None) if isinstance(obj_contents, list): - if obj['t'] != 'DefinitionList': + if node_type != 'DefinitionList': yield from walk_node_list(obj_contents) else: for elem in obj_contents: @@ -509,12 +513,16 @@ def walk_node_list_less_note_contents(node_list): if isinstance(obj, list): yield from walk_node_list_less_note_contents(obj) elif isinstance(obj, dict): + try: + node_type = obj['t'] + except KeyError: + continue yield (obj, node_list, index) - if obj['t'] == 'Note': + if node_type == 'Note': continue obj_contents = obj.get('c', None) if isinstance(obj_contents, list): - if obj['t'] != 'DefinitionList': + if node_type != 'DefinitionList': yield from walk_node_list_less_note_contents(obj_contents) else: for elem in obj_contents: diff --git a/codebraid/version.py b/codebraid/version.py index 9c3c2ed..dba3c66 100644 --- a/codebraid/version.py +++ b/codebraid/version.py @@ -1,4 +1,4 @@ # -*- coding: utf-8 -*- from .fmtversion import get_version_plus_info -__version__, __version_info__ = get_version_plus_info(0, 5, 0, 'dev', 0) +__version__, __version_info__ = get_version_plus_info(0, 5, 0, 'dev', 1)