Changeset 330


Ignore:
Timestamp:
Jun 15, 2006, 5:30:27 PM (13 years ago)
Author:
nick
Message:

Move the common geo formatting into Listing.pm

Location:
wiki-toolkit/trunk/lib/Wiki/Toolkit/Feed
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • wiki-toolkit/trunk/lib/Wiki/Toolkit/Feed/Atom.pm

    r329 r330  
    162162
    163163    # Include geospacial data, if we have it
    164     my $geo_atom = "";
    165     if($node->{metadata}->{latitude}) {
    166         $geo_atom .= "  <geo:lat>".$node->{metadata}->{latitude}."</geo:lat>\n";
    167     }
    168     if($node->{metadata}->{longitude}) {
    169         $geo_atom .= "  <geo:long>".$node->{metadata}->{longitude}."</geo:long>\n";
    170     }
    171     if($node->{metadata}->{os_x}) {
    172         $geo_atom .= "  <space:os_x>".$node->{metadata}->{os_x}."</space:os_x>\n";
    173     }
    174     if($node->{metadata}->{os_y}) {
    175         $geo_atom .= "  <space:os_y>".$node->{metadata}->{os_y}."</space:os_y>\n";
    176     }
    177     if($node->{metadata}->{distance}) {
    178         $geo_atom .= "  <space:distance>".$node->{metadata}->{distance}."</space:distance>\n";
    179     }
     164    my $geo_atom = $self->format_geo($node->{metadata});
    180165
    181166    # TODO: Find an Atom equivalent of ModWiki, so we can include more info
  • wiki-toolkit/trunk/lib/Wiki/Toolkit/Feed/Listing.pm

    r329 r330  
    153153}
    154154
     155=item B<format_geo>
     156
     157Using the geo and space xml namespaces, format the supplied node metadata
     158into geo: and space: tags, suitable for inclusion in a feed with those
     159namespaces imported.
     160
     161=cut
     162sub format_geo {
     163    my ($self, %metadata) = @_;
     164    if(ref($_[1]) eq "HASH") {
     165        %metadata = %{$_[1]};
     166    }
     167
     168    my %mapping = (
     169            "os_x" => "space:os_x",
     170            "os_y" => "space:os_y",
     171            "latitude"  => "geo:lat",
     172            "longitude" => "geo:long",
     173            "distance"  => "space:distance",
     174    );
     175
     176    my $feed = "";
     177
     178    foreach my $geo (keys %metadata) {
     179        my $geo_val = $metadata{$geo};
     180        if(ref($geo_val) eq "ARRAY") {
     181            $geo_val = $geo_val->[0];
     182        }
     183
     184        if($mapping{$geo}) {
     185            my $tag = $mapping{$geo};
     186            $feed .= "  <$tag>$geo_val</$tag>\n";
     187        }
     188    }
     189
     190    return $feed;
     191}
     192
    155193
    156194
  • wiki-toolkit/trunk/lib/Wiki/Toolkit/Feed/RSS.pm

    r329 r330  
    221221
    222222    # Include geospacial data, if we have it
    223     my $geo_rss = "";
    224     if($node->{metadata}->{latitude}) {
    225         $geo_rss .= "  <geo:lat>".$node->{metadata}->{latitude}."</geo:lat>\n";
    226     }
    227     if($node->{metadata}->{longitude}) {
    228         $geo_rss .= "  <geo:long>".$node->{metadata}->{longitude}."</geo:long>\n";
    229     }
    230     if($node->{metadata}->{os_x}) {
    231         $geo_rss .= "  <space:os_x>".$node->{metadata}->{os_x}."</space:os_x>\n";
    232     }
    233     if($node->{metadata}->{os_y}) {
    234         $geo_rss .= "  <space:os_y>".$node->{metadata}->{os_y}."</space:os_y>\n";
    235     }
    236     if($node->{metadata}->{distance}) {
    237         $geo_rss .= "  <space:distance>".$node->{metadata}->{distance}."</space:distance>\n";
    238     }
     223    my $geo_rss = $self->format_geo($node->{metadata});
    239224
    240225    push @items, qq{
Note: See TracChangeset for help on using the changeset viewer.