def _get_date_value(element: Element) -> UncertainDate: for sub_element in element.get_child_elements(): if FamilyTree._has_tag(sub_element, Tag.Date): date, unparsed = Date.parse(sub_element.get_value()) assert (date is not None and unparsed == ""), f"Must parse date, but got {date, unparsed}" return date return None
def element_equals(element1: Element, element2: Element): if not element_values_equals(element1, element2): print(f'{element1.to_gedcom_string()} != {element2.to_gedcom_string()}', file=sys.stderr) return False if len(element1.get_child_elements()) != len(element2.get_child_elements()): print(f'element1.len ({len(element1.get_child_elements())}) != ' f'element2.len ({len(element2.get_child_elements())})', file=sys.stderr) return False child_elements_2 = element2.get_child_elements().copy() for e1 in element1.get_child_elements(): found_match = False for e2 in child_elements_2: if element_values_equals(e1, e2): found_match = True child_elements_2.remove(e2) break if not found_match: print(f'No match found for element: {e1.to_gedcom_string()}', file=sys.stderr) return False return True
def print_element(file, element: Element, depth=0): file.write(element.to_gedcom_string()) for child in element.get_child_elements(): print_element(file, child, depth=depth+1)
def print_element(self, file, element: Element, depth=0): gedcom_string = element.to_gedcom_string() file.write(gedcom_string) for child in element.get_child_elements(): self.print_element(file, child, depth=depth + 1)
def get_create_child_by_tag(element: Element, tag: str): childs = element.get_child_elements() for child in childs: if child.get_tag() == tag: return child return element.new_child_element(tag)