|
- #!/usr/bin/env python3
-
- from typing import Union
- from .utils import _
-
- from kosmorrolib import EventType, MoonPhaseType, ObjectIdentifier, Event
-
-
- def from_event(event: Event, with_description: bool = True) -> Union[None, str]:
- string, details = {
- EventType.OPPOSITION: (_("%s is in opposition"), None),
- EventType.CONJUNCTION: (_("%s and %s are in conjunction"), None),
- EventType.OCCULTATION: (_("%s occults %s"), None),
- EventType.MAXIMAL_ELONGATION: (
- _("Elongation of %s is maximal"),
- lambda e: "{:.3n}°".format(e.details["deg"]),
- ),
- EventType.PERIGEE: (_("%s is at its perigee"), None),
- EventType.APOGEE: (_("%s is at its apogee"), None),
- }.get(event.event_type, (None, None))
-
- if string is None:
- return None
-
- string = string % tuple([from_object(o.identifier) for o in event.objects])
-
- if details is not None and with_description:
- return "%s (%s)" % (string, details(event))
-
- return string
-
-
- def from_moon_phase(moon_phase: MoonPhaseType) -> str:
- string = {
- MoonPhaseType.NEW_MOON: _("New Moon"),
- MoonPhaseType.WAXING_CRESCENT: _("Waxing Crescent"),
- MoonPhaseType.FIRST_QUARTER: _("First Quarter"),
- MoonPhaseType.WAXING_GIBBOUS: _("Waxing Gibbous"),
- MoonPhaseType.FULL_MOON: _("Full Moon"),
- MoonPhaseType.WANING_GIBBOUS: _("Waning Gibbous"),
- MoonPhaseType.LAST_QUARTER: _("Last Quarter"),
- MoonPhaseType.WANING_CRESCENT: _("Waning Crescent"),
- }.get(moon_phase)
-
- if string is None:
- raise RuntimeError("Unknown moon phase: %s." % moon_phase)
-
- return string
-
-
- def from_object(identifier: ObjectIdentifier) -> str:
- return {
- ObjectIdentifier.SUN: _("Sun"),
- ObjectIdentifier.MOON: _("Moon"),
- ObjectIdentifier.MERCURY: _("Mercury"),
- ObjectIdentifier.VENUS: _("Venus"),
- ObjectIdentifier.MARS: _("Mars"),
- ObjectIdentifier.JUPITER: _("Jupiter"),
- ObjectIdentifier.SATURN: _("Saturn"),
- ObjectIdentifier.URANUS: _("Uranus"),
- ObjectIdentifier.NEPTUNE: _("Neptune"),
- ObjectIdentifier.PLUTO: _("Pluto"),
- }.get(identifier)
|