Textbau erweitert
This commit is contained in:
@@ -666,6 +666,34 @@ if (!function_exists('monthForecastBuildNarrativeText')) {
|
||||
return implode(', ', $parts);
|
||||
};
|
||||
|
||||
$buildSeasonNarrative = static function (array $event): ?string {
|
||||
$label = trim((string) ($event['event'] ?? ''));
|
||||
$date = trim((string) ($event['date'] ?? ''));
|
||||
if ($label === '' || $date === '') {
|
||||
return null;
|
||||
}
|
||||
|
||||
return match ($label) {
|
||||
'Fruehlingsanfang' => 'Der astronomische Frühling beginnt am ' . $date . '. Dann überschreitet die Sonne den Himmelsäquator nach Norden; Tag und Nacht sind zu diesem Zeitpunkt annähernd gleich lang.',
|
||||
'Sommeranfang' => 'Der astronomische Sommer beginnt am ' . $date . '. Dann erreicht die Sonne ihren nördlichsten Punkt auf der scheinbaren Jahresbahn und steht senkrecht über dem Wendekreis des Krebses.',
|
||||
'Herbstanfang' => 'Der astronomische Herbst beginnt am ' . $date . '. Dann überschreitet die Sonne den Himmelsäquator wieder nach Süden; Tag und Nacht sind dabei annähernd gleich lang.',
|
||||
'Winteranfang' => 'Der astronomische Winter beginnt am ' . $date . '. Dann erreicht die Sonne ihren südlichsten Punkt auf der scheinbaren Jahresbahn und steht senkrecht über dem Wendekreis des Steinbocks.',
|
||||
default => null,
|
||||
};
|
||||
};
|
||||
|
||||
$seasonEvents = $findEvents(
|
||||
$filteredEvents,
|
||||
static fn (array $event): bool => (string) ($event['type'] ?? '') === 'season_change',
|
||||
1
|
||||
);
|
||||
if ($seasonEvents !== []) {
|
||||
$seasonNarrative = $buildSeasonNarrative($seasonEvents[0]);
|
||||
if ($seasonNarrative !== null) {
|
||||
$paragraphs[] = $seasonNarrative;
|
||||
}
|
||||
}
|
||||
|
||||
$moonEvents = $findEvents(
|
||||
$filteredEvents,
|
||||
static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['moon_phase', 'golden_handle', 'moon_planet_approach', 'moon_deep_sky_approach', 'moon_occultation', 'moon_apsis'], true),
|
||||
@@ -675,13 +703,22 @@ if (!function_exists('monthForecastBuildNarrativeText')) {
|
||||
$paragraphs[] = 'Auch der Mond liefert im Laufe des Monats einige markante Beobachtungsmomente. Besonders auffaellig sind ' . $describeEvents($moonEvents) . '.';
|
||||
}
|
||||
|
||||
$planetEvents = $findEvents(
|
||||
$planetObservationEvents = $findEvents(
|
||||
$filteredEvents,
|
||||
static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['inner_planet_elongation', 'venus_peak_magnitude', 'outer_planet_event', 'outer_planet_station', 'planet_conjunction', 'planet_constellation_change', 'planet_parade', 'mercury_good_visibility'], true),
|
||||
static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['inner_planet_elongation', 'venus_peak_magnitude', 'outer_planet_event', 'planet_conjunction', 'planet_parade', 'mercury_good_visibility'], true),
|
||||
5
|
||||
);
|
||||
if ($planetEvents !== []) {
|
||||
$paragraphs[] = 'Bei den Planeten lohnt sich vor allem der Blick auf ' . $describeEvents($planetEvents) . '. Diese Termine geben dem Monat seinen charakteristischen planetaren Akzent.';
|
||||
if ($planetObservationEvents !== []) {
|
||||
$paragraphs[] = 'Bei den Planeten lohnt sich vor allem der Blick auf ' . $describeEvents($planetObservationEvents) . '. Diese Termine geben dem Monat seinen charakteristischen planetaren Akzent.';
|
||||
}
|
||||
|
||||
$planetMotionEvents = $findEvents(
|
||||
$filteredEvents,
|
||||
static fn (array $event): bool => in_array((string) ($event['type'] ?? ''), ['outer_planet_station', 'planet_constellation_change'], true),
|
||||
4
|
||||
);
|
||||
if ($planetMotionEvents !== []) {
|
||||
$paragraphs[] = 'Im Monatsverlauf zeigen sich bei den Planeten auch auffaellige Positionswechsel. Dazu gehoeren ' . $describeEvents($planetMotionEvents) . '.';
|
||||
}
|
||||
|
||||
$eclipseEvents = $findEvents(
|
||||
@@ -707,8 +744,6 @@ if (!function_exists('monthForecastBuildNarrativeText')) {
|
||||
$paragraphs[] = 'Zu den auffaelligen Terminen des Monats gehoeren ' . $describeEvents($highlights) . '.';
|
||||
}
|
||||
|
||||
$paragraphs[] = 'Die chronologische Ereignisliste darunter dient als kompakte Terminuebersicht; automatische ISS- und Favoriten-Satellitenueberfluege bleiben in diesem Beschreibungstext bewusst unberuecksichtigt.';
|
||||
|
||||
return implode("\n\n", $paragraphs);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user