filterXPath('//änderungen/änderung') ->each(function (Crawler $node) use (&$mutableFields) { $category = match ($node->attr('art')) { 'anzahl_teilnehmer' => MutableData::CATEGORY_PARTICIPANT_COUNT, 'beförderung' => MutableData::CATEGORY_TRANSPORTATION, 'zustieg' => MutableData::CATEGORY_PICKUP, 'unterbringung' => MutableData::CATEGORY_ACCOMMODATION, 'zusatzleistung' => MutableData::CATEGORY_ADDITIONAL_SERVICES, 'teilnehmerdaten' => MutableData::CATEGORY_PARTICIPANT_DATA, default => null, }; if (null !== $category) { $mutableField = new MutableData($category, $this->stringToBool($node->attr('möglich'))); if (null !== $until = $node->attr('möglichbiszum')) { $mutableField->mutableBefore = $this->stringToDate($until); } $mutableFields[$category] = $mutableField; } }) ; return new BaseData($mutableFields); } }