- league => ucfirst lc $ladder->{ladder}->[0]->{league},
- division => $ladder->{ladder}->[0]->{ladderName},
- rank => $ladder->{ladder}->[0]->{rank},
- tag => $ladder->{characters}->[0]->{clanTag},
- members => [map { blizget(metadata => profile => 2 => 1 => $_->{id}) } $ladder->{characters}->@*],
- # lacks mmr, fav race (available in new api)
-});
+ name => $members[0]->{clanName},
+ tag => $members[0]->{clanTag},
+ ladders => [
+ map {{
+ id => $_->{ladder}->[0]->{ladderId},
+ league => lc $_->{ladder}->[0]->{league},
+ division => $_->{ladder}->[0]->{ladderName},
+ rank => $_->{ladder}->[0]->{rank},
+ members => [map { $memberidx{$_->{id}} } $_->{characters}->@*],
+ wins => $_->{ladder}->[0]->{wins},
+ losses => $_->{ladder}->[0]->{losses},
+ (season => -1) x ($_->{season} eq 'previousSeason'),
+ }}
+ sort_by { $_->{season} } # season
+ nsort_by {
+ -($_->{ladder}->[0]->{wins} + $_->{ladder}->[0]->{losses})
+ } # activity desc
+ @ladders
+ ],
+ members => [map {
+ blizget(metadata => @realmget => $_->{id})
+ # lacks mmr, fav race (available in new api)
+ } @members],
+ matches => [nsort_by { -$_->{date} } values %game],
+}) =~ s/(?: \G \d,? | \[ ) \K \s+ (?=\d|\])/ /grx; # concat arrays of single digits