Przeglądaj źródła

person: identifier, name, birth date

Fabian Peter Hammerle 4 lat temu
commit
fc3d4305b4
1 zmienionych plików z 54 dodań i 0 usunięć
  1. 54 0
      family_tree_yaml/__init__.py

+ 54 - 0
family_tree_yaml/__init__.py

@@ -0,0 +1,54 @@
+import datetime
+import typing
+
+
+class Person:
+    def __init__(self, identifier: str):
+        self.identifier: str = identifier
+        self.name: typing.Optional[str] = None
+        self.birth_date: typing.Optional[datetime.date] = None
+
+    def __repr__(self) -> str:
+        """
+        >>> p = Person("max-mustermann")
+        >>> repr(p)
+        'Person(max-mustermann)'
+        >>> p.name = "Hr. Mustermann"
+        >>> repr(p)
+        'Person(max-mustermann, Hr. Mustermann)'
+        >>> p.name = "Max Mustermann"
+        >>> repr(p)
+        'Person(max-mustermann, Max Mustermann)'
+        >>> p.birth_date = datetime.date(1976, 2, 1)
+        >>> repr(p)
+        'Person(max-mustermann, Max Mustermann, *1976-02-01)'
+        """
+        return "{}({})".format(
+            type(self).__name__,
+            ", ".join(
+                filter(
+                    None,
+                    (
+                        self.identifier,
+                        self.name,
+                        "*" + self.birth_date.isoformat()
+                        if self.birth_date is not None
+                        else None,
+                    ),
+                )
+            ),
+        )
+
+    def __str__(self) -> str:
+        """
+        >>> p = Person("max-mustermann")
+        >>> p.name = "Max Mustermann"
+        >>> str(p)
+        'Max Mustermann'
+        >>> p.birth_date = datetime.date(1976, 2, 1)
+        >>> str(p)
+        'Max Mustermann (*1976-02-01)'
+        """
+        return (self.name or "unnamed") + (
+            " (*{})".format(self.birth_date.isoformat()) if self.birth_date else ""
+        )