Bundle-PBib
view release on metacpan or search on metacpan
lib/PBib/ReferenceConverter.pm view on Meta::CPAN
foreach my $arg (keys %args) {
$self->{$arg} = $args{$arg};
}
}
#
#
# access methods
#
#
sub inDoc { my $self = shift; return $self->{'inDoc'}; }
sub outDoc { my $self = shift; return $self->{'outDoc'}; }
# options for the ref' converter share the ref'style's options.
sub option { my ($self, $opt) = @_; return $self->refOptions()->{$opt}; }
sub refOptions { my $self = shift; return $self->{'refOptions'} || {}; }
sub labelOptions { my $self = shift; return $self->{'labelOptions'} || {}; }
sub bibOptions { my $self = shift; return $self->{'bibOptions'} || {}; }
sub itemOptions { my $self = shift; return $self->{'itemOptions'} || {}; }
sub refStyle { my $self = shift; return $self->{'refStyle'}; }
sub labelStyle { my $self = shift; return $self->{'labelStyle'}; }
sub bibStyle { my $self = shift; return $self->{'bibStyle'}; }
sub itemStyle { my $self = shift; return $self->{'itemStyle'}; }
sub messages {
my ($self) = @_;
return $self->{'messages'} if $self->{'messages'};
return $self->{'messages'} = [];
}
sub clearMessages {
my ($self) = @_;
delete $self->{'messages'}
}
sub logMessage {
my $self = shift;
print STDERR utf8_to_ascii("@_\n") unless $self->{'quiet'};
push @{$self->messages()}, "@_";
}
sub traceMessage {
my $self = shift;
print STDERR utf8_to_ascii("@_\n") if $self->{'verbose'};
push @{$self->messages()}, "@_";
}
sub warn {
my $self = shift;
$self->logMessage("WARNING: @_");
}
sub utf8_to_ascii {
# on my system (win), STDERR does not support utf8 (per default)
# this function maps unicode to plain ascii to avoid warnings
# about unprintable wide characters.
return join("",
map { $_ > 255 ? # if wide character...
sprintf("&#x%04X;", $_) : # \x{...}
chr($_) # else as themselves
} unpack("U*", $_[0])); # unpack Unicode characters
}
#
#
# scanning methods
#
#
# all information about found references
sub foundInfo { my ($self) = @_; $self->scan(); return $self->{'foundInfo'}; }
# all information about found paragraphs with references
sub parInfo { my ($self) = @_; $self->scan(); return $self->{'parInfo'}; }
# all indexes of paragraphs containing refs
sub parIndexes { my ($self) = @_; return [keys(%{$self->parInfo()})]; }
# all ID of found references
sub foundIDs { my ($self) = @_; return [keys(%{$self->foundInfo()})]; }
sub knownIDs {
#
# return known and found ref IDs => the items for the bibliography
#
my ($self) = @_;
my @items;
my $refs = $self->refs();
# remove unknown reference IDs
foreach my $ref (@{$self->foundIDs()}) {
push @items, $ref
if defined($refs->{$ref});
}
return \@items;
}
sub unknownIDs {
#
# return unknown and found ref IDs => possible errors!
#
my ($self) = @_;
my @items;
my $refs = $self->refs();
# remove known reference IDs
foreach my $ref (@{$self->foundIDs()}) {
push @items, $ref
unless defined($refs->{$ref});
}
return \@items;
}
( run in 2.317 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )