From e8ca7277c78a921a984c36f6accea05ac773b838 Mon Sep 17 00:00:00 2001 From: eadamsatx Date: Sun, 9 Dec 2018 12:59:36 -0600 Subject: [PATCH] Fix various bugs for MARKUP-41, MARKUP-57, title 21 --- regparser/grammar/amdpar.py | 9 ++++++++- regparser/history/versions.py | 9 +++++++++ regparser/layer/terms.py | 2 ++ regparser/web/settings/parser.py | 3 ++- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/regparser/grammar/amdpar.py b/regparser/grammar/amdpar.py index 0a8850de..70ec754e 100644 --- a/regparser/grammar/amdpar.py +++ b/regparser/grammar/amdpar.py @@ -328,7 +328,14 @@ def _through_paragraph(prev_lab, next_lab): """Expand "through" for labels ending in a paragraph.""" depth = len(prev_lab) start = p_levels[depth - 4].index(prev_lab[-1]) + 1 - end = p_levels[depth - 4].index(next_lab[-1]) + try: + end = p_levels[depth - 4].index(next_lab[-1]) + except ValueError as e: # Title 21 seems to skip a level + try: + end = p_levels[depth - 3].index(next_lab[-1]) + except ValueError as e: # Title 21 seems to skip a level + end = None # This will fail; for debugging purposes only + return [tokens.Paragraph.make(prev_lab[:depth - 1] + [p_levels[depth - 4][i]]) for i in range(start, end)] diff --git a/regparser/history/versions.py b/regparser/history/versions.py index b8f415fe..98eca734 100644 --- a/regparser/history/versions.py +++ b/regparser/history/versions.py @@ -27,6 +27,15 @@ def json(self): def from_json(json_str): json_dict = json.loads(json_str) effective = json_dict.get('effective') + if 'fr_citation' not in json_dict: + try: + json_dict['fr_citation'] = { + 'volume': json_dict['volume'], + 'page': json_dict['page'] + } + except KeyError as e: + pass + if effective: effective = datetime.strptime(effective, '%Y-%m-%d').date() return Version(json_dict['identifier'], effective, diff --git a/regparser/layer/terms.py b/regparser/layer/terms.py index b073dd60..06356c35 100644 --- a/regparser/layer/terms.py +++ b/regparser/layer/terms.py @@ -60,6 +60,8 @@ def inflected(self, term): def look_for_defs(self, node, stack=None): """Check a node and recursively check its children for terms which are being defined. Add these definitions to self.scoped_terms.""" + if node.tagged_text is None: + node.tagged_text = '\n ' stack = stack or ParentStack() stack.add(node.depth(), node) if node.node_type in (struct.Node.REGTEXT, struct.Node.SUBPART, diff --git a/regparser/web/settings/parser.py b/regparser/web/settings/parser.py index 68227d65..c5349c0a 100644 --- a/regparser/web/settings/parser.py +++ b/regparser/web/settings/parser.py @@ -1,4 +1,5 @@ from regparser import plugins +import os META = {} @@ -110,7 +111,7 @@ # your own key at # http://regulationsgov.github.io/developers/key/ REGS_GOV_API = 'https://api.data.gov/regulations/v3/' -REGS_GOV_KEY = 'DEMO_KEY' +REGS_GOV_KEY = os.environ['REGSGOVKEY'] # These are the host and port for the regparser Django server running the # administrative UI.