}); } //var_dump(download(new ChapterPage( // new Chapter('Sudome', 'http://www.mangatown.com/manga/sundome/v01/c002/3.html'), // new Page('03', 'http://www.mangatown.com/manga/sundome/v01/c002/3.html'), // new PageImage('http://a.mangatown.com/store/manga/3412/01-002.0/compressed/002.jpg?v=51215960241') //))); //die; IO\getArgs()->map(get(0))->map(function (Maybe\Maybe $argument) { return $argument->map(function ($mangaUrl) { var_dump('started ', $mangaUrl); $mangaData = fetchMangaData($mangaUrl); var_dump('manga data ready'); $afterDownload = $mangaData->map(f\map(f\map(download))); var_dump('manga first run'); $afterDownload->map(function (Collection $collection) { $ttl = 2; do { var_dump('re-download'); $toRetry = f\filter(function (Maybe\Maybe $maybe) { return $maybe->extract() instanceof Either\Left; }, $collection); $count = count($toRetry); $collection = Collection::of($toRetry)->map(function ($a) use(&$ttl, $count) { var_dump('retry', $ttl, $count); return failed($a, $ttl); }); } while (count($toRetry) > 0); }); }); })->run();
function xpath(\DOMDocument $doc, $path) { $xpath = new \DOMXPath($doc); $elements = $xpath->query($path); return $elements->length ? Maybe\just(Collection::of($elements)) : Maybe\nothing(); }