*/ 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:----gpMRep5LCQXH63DYtOXhL78QwtfO7n8rG57eVLpQsX/DlEqAWiV177mtrmIJrlHvrQKWrjdCaSb/RRIyl1Lq2zXV+bdtzWHDsQ1/S9qyhDaYvZQmM8xSgZ45P7LwYQgK9x6ilkC8a/BOvcG5WyHJ+dsyLGomqYUspArr9lxEVMkB9whFgsHVgOZRJiqFXuXIaCPpDXG5JZCK429xDAeUcBFs/8Z9oNevwXr3Jq8x4e80OZX1azumLUUI5tq4ZX3O1k4/3mDEr7UYUVmQ23hhQkwqPWAWtjwvrvYR77T0N4d2T/qXhJ1sHdyUlMV3O0ZLnZpdxhXJ7/K8RZjg5R46ESyWQnwsXFfaghdm+NJF28XO43jpj6gfY1uJ11TBxHELQKQpV9eM5R9gTi/d9nP98LknSGKmTgnLqkopSJfaHaoMn1dXJhs/6pY7Nl6322ZIEnNb5wXWj0TwPaHam7foVv6uoJnke3SpyyLHooUrDOBGNTSOnJFL2LCl2oEAFJ6TJSwjvTLFUraG3Kbe3ppas+I+7d1RU9rh9Of/WQvwIXuSjsDWfTA5sjEHm9e11j5lmjo36UFp+KmUy3wUlNucLDvsrlarzx8PHmleMuItJaGbQfSUAXobS89B1BFbe5Ij+oEbnDUoi3My4Rqa2mwsmb0/fzwcOj09a5D/D0Zau1U=----ATTACHMENT:----MzM0NTU4ODYwNzY5NzM1NiAyMzMwMzQ4MjU3NjkzNjA0IDUwMDIyNzAxMzY0MDcxNjA=