def test_add_child_interp(self): reg_tree = compiler.RegulationTree(None) n1 = Node('n1', label=['205', '1', 'Interp']) n5 = Node('n5', label=['205', '5', 'Interp']) n9 = Node('n9', label=['205', '9', 'Interp']) n10 = Node('n10', label=['205', '10', 'Interp']) children = [n1, n5, n10] children = reg_tree.add_child(children, n9) self.assertEqual(children, [n1, n5, n9, n10]) n1.label = ['205', '1', 'a', '1', 'i', 'Interp'] n5.label = ['205', '1', 'a', '1', 'v', 'Interp'] n9.label = ['205', '1', 'a', '1', 'ix', 'Interp'] n10.label = ['205', '1', 'a', '1', 'x', 'Interp'] children = [n1, n5, n10] children = reg_tree.add_child(children, n9) self.assertEqual(children, [n1, n5, n9, n10]) n1.label = ['205', '1', 'a', 'Interp', '1', 'i'] n5.label = ['205', '1', 'a', 'Interp', '1', 'v'] n9.label = ['205', '1', 'a', 'Interp', '1', 'ix'] n10.label = ['205', '1', 'a', 'Interp', '1', 'x'] children = [n1, n5, n10] children = reg_tree.add_child(children, n9) self.assertEqual(children, [n1, n5, n9, n10]) n1.label = ['205', '1', 'Interp', '1'] n5.label = ['205', '1', 'a', 'Interp'] children = [n1] children = reg_tree.add_child(children, n5) self.assertEqual(children, [n1, n5]) children = [n5] children = reg_tree.add_child(children, n1) self.assertEqual(children, [n1, n5])
def test_add_child_interp(self): reg_tree = compiler.RegulationTree(None) n1 = Node("n1", label=["205", "1", "Interp"]) n5 = Node("n5", label=["205", "5", "Interp"]) n9 = Node("n9", label=["205", "9", "Interp"]) n10 = Node("n10", label=["205", "10", "Interp"]) children = [n1, n5, n10] children = reg_tree.add_child(children, n9) self.assertEqual(children, [n1, n5, n9, n10]) n1.label = ["205", "1", "a", "1", "i", "Interp"] n5.label = ["205", "1", "a", "1", "v", "Interp"] n9.label = ["205", "1", "a", "1", "ix", "Interp"] n10.label = ["205", "1", "a", "1", "x", "Interp"] children = [n1, n5, n10] children = reg_tree.add_child(children, n9) self.assertEqual(children, [n1, n5, n9, n10]) n1.label = ["205", "1", "a", "Interp", "1", "i"] n5.label = ["205", "1", "a", "Interp", "1", "v"] n9.label = ["205", "1", "a", "Interp", "1", "ix"] n10.label = ["205", "1", "a", "Interp", "1", "x"] children = [n1, n5, n10] children = reg_tree.add_child(children, n9) self.assertEqual(children, [n1, n5, n9, n10]) n1.label = ["205", "1", "Interp", "1"] n5.label = ["205", "1", "a", "Interp"] children = [n1] children = reg_tree.add_child(children, n5) self.assertEqual(children, [n1, n5]) children = [n5] children = reg_tree.add_child(children, n1) self.assertEqual(children, [n1, n5])
def test_bad_label(self): label = ['205', '4', 'a', '1', 'ii', 'A'] node = Node('text', label=label, node_type=Node.REGTEXT) self.assertFalse(changes.bad_label(node)) node.label = ['205', '38', 'i', 'vii', 'A'] self.assertTrue(changes.bad_label(node)) node.label = ['205', 'ii'] self.assertTrue(changes.bad_label(node)) node.label = ['205', '38', 'A', 'vii', 'A'] self.assertTrue(changes.bad_label(node))
def test_bad_label(self): label = ["205", "4", "a", "1", "ii", "A"] node = Node("text", label=label, node_type=Node.REGTEXT) self.assertFalse(changes.bad_label(node)) node.label = ["205", "38", "i", "vii", "A"] self.assertTrue(changes.bad_label(node)) node.label = ["205", "ii"] self.assertTrue(changes.bad_label(node)) node.label = ["205", "38", "A", "vii", "A"] self.assertTrue(changes.bad_label(node))
def test_bad_label(): label = ['205', '4', 'a', '1', 'ii', 'A'] node = Node('text', label=label, node_type=Node.REGTEXT) assert not changes.bad_label(node) node.label = ['205', '38', 'i', 'vii', 'A'] assert changes.bad_label(node) node.label = ['205', 'ii'] assert changes.bad_label(node) node.label = ['205', '38', 'A', 'vii', 'A'] assert changes.bad_label(node)
def derive_nodes(self, xml, processor=None): text = tree_utils.get_node_text(xml).strip() node = Node(text=text, source_xml=xml) node.tagged_text = unicode( tree_utils.get_node_text_tags_preserved(xml).strip()) regex = self._PAREN_REGEX if text[:1] == '(' else self._PERIOD_REGEX match = regex.match(text) if match: node.label = [match.group('marker')] else: node.label = [mtypes.MARKERLESS] return [node]
def derive_nodes(self, xml, processor=None): text = tree_utils.get_node_text(xml).strip() node = Node(text=text, source_xml=xml) node.tagged_text = six.text_type( tree_utils.get_node_text_tags_preserved(xml).strip()) regex = self._PAREN_REGEX if text[:1] == '(' else self._PERIOD_REGEX match = regex.match(text) if match: node.label = [match.group('marker')] else: node.label = [mtypes.MARKERLESS] return [node]
def paragraph_with_marker(self, text, tagged_text): """The paragraph has a marker, like (a) or a. etc.""" # To aid in determining collapsed paragraphs, replace any # keyterms present node_for_keyterms = Node(text, node_type=Node.APPENDIX) node_for_keyterms.tagged_text = tagged_text node_for_keyterms.label = [initial_marker(text)[0]] keyterm = KeyTerms.get_keyterm(node_for_keyterms) if keyterm: mtext = text.replace(keyterm, ';'*len(keyterm)) else: mtext = text for mtext in split_paragraph_text(mtext): if keyterm: # still need the original text mtext = mtext.replace(';'*len(keyterm), keyterm) # label_candidate = [initial_marker(mtext)[0]] # existing_node = None # for node in self.nodes: # if node.label == label_candidate: # existing_node = node # if existing_node: # self.paragraph_counter += 1 # node = Node(mtext, node_type=Node.APPENDIX, # label=['dup{}'.format(self.paragraph_counter), # initial_marker(mtext)[0]]) # else: node = Node(mtext, node_type=Node.APPENDIX, label=[initial_marker(mtext)[0]]) node.tagged_text = tagged_text self.nodes.append(node)
def paragraph_with_marker(self, text, tagged_text): """The paragraph has a marker, like (a) or a. etc.""" # To aid in determining collapsed paragraphs, replace any # keyterms present node_for_keyterms = Node(text, node_type=Node.APPENDIX) node_for_keyterms.tagged_text = tagged_text node_for_keyterms.label = [initial_marker(text)[0]] keyterm = KeyTerms.get_keyterm(node_for_keyterms) if keyterm: mtext = text.replace(keyterm, ';' * len(keyterm)) else: mtext = text for mtext in split_paragraph_text(mtext): if keyterm: # still need the original text mtext = mtext.replace(';' * len(keyterm), keyterm) # label_candidate = [initial_marker(mtext)[0]] # existing_node = None # for node in self.nodes: # if node.label == label_candidate: # existing_node = node # if existing_node: # self.paragraph_counter += 1 # node = Node(mtext, node_type=Node.APPENDIX, # label=['dup{}'.format(self.paragraph_counter), # initial_marker(mtext)[0]]) # else: node = Node(mtext, node_type=Node.APPENDIX, label=[initial_marker(mtext)[0]]) node.tagged_text = tagged_text self.nodes.append(node)
def test_get_parent_label(self): node = Node(node_type=Node.REGTEXT) node.label = ['205', '3', 'a'] self.assertEqual(compiler.get_parent_label(node), "205-3") node.label = ['205', '3', 'a', '5', 'ii', 'R'] self.assertEqual(compiler.get_parent_label(node), "205-3-a-5-ii") node.node_type = Node.SUBPART self.assertEqual(compiler.get_parent_label(node), "205") node.node_type = Node.INTERP node.label = ['205', '3', 'a', Node.INTERP_MARK, '1', 'i'] self.assertEqual(compiler.get_parent_label(node), "205-3-a-Interp-1") node.label = ['205', '3', 'a', Node.INTERP_MARK, '1'] self.assertEqual(compiler.get_parent_label(node), "205-3-a-Interp") node.label = ['205', '3', 'a', Node.INTERP_MARK] self.assertEqual(compiler.get_parent_label(node), "205-3-Interp")
def test_get_parent_label(self): node = Node(node_type=Node.REGTEXT) node.label = ["205", "3", "a"] self.assertEqual(compiler.get_parent_label(node), "205-3") node.label = ["205", "3", "a", "5", "ii", "R"] self.assertEqual(compiler.get_parent_label(node), "205-3-a-5-ii") node.node_type = Node.SUBPART self.assertEqual(compiler.get_parent_label(node), "205") node.node_type = Node.INTERP node.label = ["205", "3", "a", Node.INTERP_MARK, "1", "i"] self.assertEqual(compiler.get_parent_label(node), "205-3-a-Interp-1") node.label = ["205", "3", "a", Node.INTERP_MARK, "1"] self.assertEqual(compiler.get_parent_label(node), "205-3-a-Interp") node.label = ["205", "3", "a", Node.INTERP_MARK] self.assertEqual(compiler.get_parent_label(node), "205-3-Interp")
def paragraph_with_marker(self, text, tagged_text): """The paragraph has a marker, like (a) or a. etc.""" # To aid in determining collapsed paragraphs, replace any # keyterms present node_for_keyterms = Node(text, node_type=Node.APPENDIX) node_for_keyterms.tagged_text = tagged_text node_for_keyterms.label = [initial_marker(text)[0]] keyterm = KeyTerms.get_keyterm(node_for_keyterms) if keyterm: mtext = text.replace(keyterm, '.'*len(keyterm)) else: mtext = text for mtext in split_paragraph_text(mtext): if keyterm: # still need the original text mtext = mtext.replace('.'*len(keyterm), keyterm) node = Node(mtext, node_type=Node.APPENDIX, label=[initial_marker(mtext)[0]]) self.nodes.append(node)