1 # This module is part of da_reference, and is released
2 # under the terms of the GPL version 2, or any later version. See the
3 # file README and COPYING for more information.
4 # Copyright 2003 by Don Armstrong <don@donarmstrong.com>.
7 package Reference::Field::Pages;
27 use vars qw($REVISION $DEBUG);
30 use Params::Validate qw(:types validate_with);
33 ($REVISION) = q$LastChangedRevision$ =~ /\$LastChangedRevision:\s+([^\s+])/;
34 $DEBUG = 0 unless defined $DEBUG;
41 $self->{reference}->{pages} = {start => undef,
52 if (scalar(@_) == 1) {
53 $params{pages} = shift;
54 $params{output} = 'scalar';
57 %params = validate_with(params => \@_,
58 spec => {pages => {type => ARRAYREF|SCALAR|HASHREF,
61 start => {type => SCALAR,
64 stop => {type => SCALAR,
67 output => {default => 'scalar',
73 # Update author according to the passed information
74 if (defined $params{start} or defined $params{stop}) {
75 $self->{reference}->{pages}->{start} = $params{start} if defined $params{start};
76 $self->{reference}->{pages}->{stop} = $params{stop} if defined $params{stop};
78 elsif (defined $params{pages}) {
79 $self->{reference}->{pages} = {start => undef,
82 ($self->{reference}->{pages}->{start},$self->{reference}->{pages}->{stop}) = split(/\-+/,$params{pages});
86 return grep {defined} ($self->{reference}->{pages}->{start},$self->{reference}->{pages}->{stop});
88 local $_ = $params{output};
90 return join('--',map {defined $_ ? $_ : ()} ($self->{reference}->{pages}->{start},$self->{reference}->{pages}->{stop}));
93 return join('-',map {defined $_ ? $_ : ()} ($self->{reference}->{pages}->{start},$self->{reference}->{pages}->{stop}));