Fix off-by-one errors

This commit is contained in:
Timothy Warren 2020-04-21 20:37:42 -04:00
parent c424e3a65a
commit e3e32b4408

View File

@ -73,12 +73,10 @@ class AnimeHistoryTransformer {
$count = count($singles); $count = count($singles);
for ($i = 0; $i < $count; $i++) for ($i = 0; $i < $count; $i++)
{ {
$entries = [];
$entry = $singles[$i]; $entry = $singles[$i];
$prevTitle = $entry['title']; $prevTitle = $entry['title'];
$nextId = $i + 1; $nextId = $i;
if ($nextId < $count)
{
$entries = [];
$next = $singles[$nextId]; $next = $singles[$nextId];
while ( while (
$next['kind'] === 'progressed' && $next['kind'] === 'progressed' &&
@ -91,13 +89,11 @@ class AnimeHistoryTransformer {
{ {
$nextId++; $nextId++;
$next = $singles[$nextId]; $next = $singles[$nextId];
continue;
} }
else
{
break; break;
} }
}
}
if (count($entries) > 1) if (count($entries) > 1)
{ {
@ -112,9 +108,6 @@ class AnimeHistoryTransformer {
$title = $entries[0]['title']; $title = $entries[0]['title'];
// Get rid of the single entry added before aggregating
// array_pop($output);
$action = (count($entries) > 3) $action = (count($entries) > 3)
? "Marathoned episodes {$firstEpisode}-{$lastEpisode} of {$title}" ? "Marathoned episodes {$firstEpisode}-{$lastEpisode} of {$title}"
: "Watched episodes {$firstEpisode}-{$lastEpisode} of {$title}"; : "Watched episodes {$firstEpisode}-{$lastEpisode} of {$title}";
@ -128,13 +121,11 @@ class AnimeHistoryTransformer {
]); ]);
// Skip the rest of the aggregate in the main loop // Skip the rest of the aggregate in the main loop
$i += count($entries); $i += count($entries) - 1;
$prevTitle = $title;
continue; continue;
} }
else else
{ {
$prevTitle = $entry['title'];
$output[] = $entry; $output[] = $entry;
} }