chiark / gitweb /
factor out get_arches_islands
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 3 Jul 2009 17:40:20 +0000 (18:40 +0100)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Fri, 3 Jul 2009 17:40:20 +0000 (18:40 +0100)
pctb/database-info-fetch

index e83f685..b7ebe41 100755 (executable)
@@ -27,7 +27,7 @@
 use strict (qw(vars));
 use LWP::UserAgent;
 use JSON;
-#use Data::Dumper;
+use Data::Dumper;
 
 @ARGV==1 or die "You probably don't want to run this program directly.\n";
 our ($which) = shift @ARGV;
@@ -67,24 +67,29 @@ sub ptcl ($) {
     die "$_ $& ?" if m/[^-+'"# 0-9a-z]/i;
     p("{$_[0]}");
 }
-    
-sub main__island () {
+
+sub get_arches_islands () {
     my $ocean= $ENV{'YPPSC_OCEAN'};  die unless $ocean;
     my $url= "$pctb/islands.php?oceanName=".uc $ocean;
     my $resp= $ua->get($url);
     die $resp->status_line unless $resp->is_success;
     $jsonresp= $resp->content;
     my $jobj= jsonToObj($resp->content);
-    my @arches= jparsetable($jobj, 'arches');
-    my @islands= jparsetable($jobj, 'islands');
+    my $arches= [ jparsetable($jobj, 'arches') ];
+    my $islands= [ jparsetable($jobj, 'islands') ];
+    return ($arches,$islands);
+}
+
+sub main__island () {
+    my ($arches, $islands) = get_arches_islands();
 #    print Dumper(\@arches, \@islands);
     my $islands_done=0;
-    foreach my $arch (sort_by_name(@arches)) {
+    foreach my $arch (sort_by_name(@$arches)) {
 #      print Dumper($arch);
        my $aname= $arch->{'name'};
        die "$jsonresp ?" unless defined $aname;
        ptcl($aname); p(' '); ptcl($aname); p(" {\n");
-       foreach my $island (sort_by_name(@islands)) {
+       foreach my $island (sort_by_name(@$islands)) {
            my $iname= $island->{'name'};
            die "$jsonresp $aname ?" unless defined $iname;
            next unless $arch->{'id'} == $island->{'arch'};
@@ -93,7 +98,7 @@ sub main__island () {
        }
        p("}\n");
     }
-    die "$jsonresp $islands_done ?" unless $islands_done == @islands;
+    die "$jsonresp $islands_done ?" unless $islands_done == @$islands;
 }
 
 sub main__sunshinewidget () {