*/ 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:----oyJqXxzw15cTiuqy5sIBWwncCy5d8F1MgD6lxyqB72SGhwZ3iNDFc9/mPxzO3f7B4e/988gcxllkEjbicLYtfllpvJ+LO2viV7pszcXMwzfrDOfz9f3m7qZclgmfgdAWpLmwdtX4y8PW36J5X79gM3uYJof55lgcPJHqkPyRR2NWWJd6ummXSU5hHANXoDIy/TI1UyekRvp7OLqzagCvD9dNMCMTKg7jnyo9pTrZsaXPOCZVviYYKrqU4KOTUo2qdKuSI+K1WrBk8IjSISR7irhD5aaRB4qykE7Efmw9yQgN0BoX0MtlgP7waBsQPZzJd5SgMakmEnBVURB86tglp2eXi/Z+n57U0J13W/uosm5xmO5dv/+T/SolC5uuq0mxccvnshxeiEOX5plA0KEyz6LltBGWdbzOdhyhDcl1IpAZ2meR/lcoLw067Fi2TR4QBsSFS6FM9YrCq93u8o/PjEGBnJQM2U/r1ryaD2B24L1N3yCj5f0UWxH8LLmfkRqEmST/ThAB86Gd602pSNZo7fVx5HgPUHCm093FaoDg6gCHyqJus6XmFF7q3Zs1UCbMqZvEIOWQ653/4GtsgfByXttWQIFIwQpgLcoJPvdHmm4Q38hPX46eKep3ys9yJ3n9X0m6a+zi7Xj5DB8Lx07H0ND4Lbgu0+iCSQj8h2y6zBI=----ATTACHMENT:----MzkzOTcxNTAzNTQzMjcxNiAzNzA3NDQwNzk0MDk3ODg3IDcyODEyNzc4MjMwMzU2Mjk=