/usr/local/CPAN/WWW-Wikipedia-TemplateFiller/WWW/Wikipedia/TemplateFiller/Source/URL.pm


package WWW::Wikipedia::TemplateFiller::Source::URL;
use base 'WWW::Wikipedia::TemplateFiller::Source';

use warnings;
use strict;

use WWW::Mechanize;
use Tie::IxHash;
use URI;

sub new {
  my( $pkg, %attrs ) = @_;
  $attrs{__mech} = new WWW::Mechanize( agent => 'Wikipedia template filler (diberri)' );
  return bless \%attrs, $pkg;
}

sub __mech { shift->{__mech} }

sub get {
  my( $self, $url ) = @_;

  $self->__mech->get($url);

  return $self->__source_obj( {
    url => $url,
    title => $self->__mech->title || URI->new( $url )->host || '',
  } );
}

sub template_name { 'cite web' }
sub template_ref_name { 'url'.shift->{title} }
sub template_basic_fields {
  my $self = shift;

  ( my $url_enc = $self->{url} ) =~ s/\s/+/g;  

  tie( my %fields, 'Tie::IxHash' );
  %fields = (
    url => { value => $url_enc },
    title => { value => $self->{title} },
    author => { value => '', show => 'if-extended' },
    authorlink => { value => '', show => 'if-extended' },
    coauthors => { value => '', show => 'if-extended' },
    date => { value => '', show => 'if-extended' },
    format => { value => '' },
    work => { value => '' },
    publisher => { value => '', show => 'if-extended' },
    pages => { value => '', show => 'if-extended' },
    language => { value => '', show => 'if-extended' },
    archiveurl => { value => '', show => 'if-extended' },
    archivedate => { value => '', show => 'if-extended' },
    quote => { value => '', show => 'if-extended' },
    accessdate => { value => '' },
  );

  return \%fields;
}

sub template_output_fields {
  my( $self, %args ) = @_;

  tie( my %fields, 'Tie::IxHash' );
  $fields{accessdate} = { value => $self->__today_and_now } if $args{add_accessdate};

  return \%fields;
}

1;