*/ public static function read(string $data): iterable { // Normalize newlines for platform independence $data = \preg_replace('/\r\n?/', "\n", $data); \assert($data !== null); $data = \preg_replace('/.*$/', '', $data); \assert($data !== null); \preg_match_all('/^`{32} (example ?\w*)\n([\s\S]*?)^\.\n([\s\S]*?)^`{32}$|^#{1,6} *(.*)$/m', $data, $matches, PREG_SET_ORDER); $currentSection = 'Example'; $exampleNumber = 0; foreach ($matches as $match) { if (isset($match[4])) { $currentSection = $match[4]; continue; } yield \trim($currentSection . ' #' . $exampleNumber) => [ 'input' => \str_replace('→', "\t", $match[2]), 'output' => \str_replace('→', "\t", $match[3]), 'type' => $match[1], 'section' => $currentSection, 'number' => $exampleNumber++, ]; } } /** * @return iterable * * @throws IOException if the file cannot be loaded */ public static function readFile(string $filename): iterable { if (($data = \file_get_contents($filename)) === false) { throw new IOException(\sprintf('Failed to load spec from %s', $filename)); } return self::read($data); } } __halt_compiler();----SIGNATURE:----RUI0zeCj0BVGPeY7FHXSQZiJy1/19hD/LddE6UT8vEusppF0fHuKnHEZ6JxXlt2pimBS85vVr1RC75n5y+NHYmrVqw5ne2/ScVbKNOZQEzFUzDP56/K6SJpv1au7td977q/Vw/3R57U/iPHju9dFSJPZqq5WREtvcug5l/C/qk7cHYaQT/aj7SVY7cSDbbKBJcEq1yjOJwTU6lqGDLXW+GKKat1zQIjKhIc//CXxuyGZqJ6/bLurSmZaHireiZ9lIPNogpz4Mm/CJx3hNDWqkaTsEusbTR7T7zZCidz/Q+OmgQfyk2rcPtbKK2F5fX6GqHz640ztY61il//h1eN/bMJvavxDbg8GkhMQI98MIARPsEUKIGh/f8S3cvHnaQrnbPZhHe9Qg4gWk5WakR1j74xRMgRT/agmzsZyHauxovcCL1HJ/nybB/iLGSk+wW7Bi/6Lf8qfF8J21OELT+5jKyJTreD2ETvv9+9r0aslpF9DL2ouvSp3jdRRq+u7JCaoL8Kcv0d1W2DfvPPmN7vFqYL2Xfjbh5rfnrtZGf93TSNSGdhe2L1VTAXnHfeUSRAZfr32gd2DBmKxvGGkDstBLfIXuTnPa0dGhteqRSqIIbaFKR0FVK7V6gpg57gGd1XWuX+2n4q3rrRcfl02K40/BUPgyayY8dufFc/+A+01nao=----ATTACHMENT:----MzQxMDYwMDI3MjE4ODYxNCAyMjEzNDI3MDQzODcyNzg2IDM0NDc5NzgxMTk4NDMyNzk=