NKC-Transform-BIBFRAME2MARC

 view release on metacpan or  search on metacpan

BIBFRAME2MARC/Utils.pm  view on Meta::CPAN

package NKC::Transform::BIBFRAME2MARC::Utils;

use base qw(Exporter);
use strict;
use warnings;

use Error::Pure qw(err);
use File::Spec::Functions qw(catfile);
use File::Share ':all';
use Readonly;

Readonly::Array our @EXPORT_OK => qw(list_versions);

our $VERSION = 0.07;

sub list_versions {
	my $dir = shift;

	if (! defined $dir) {
		$dir = dist_dir('NKC-Transform-BIBFRAME2MARC');
	}

	opendir(my $dh, $dir) or err "Cannot open directory.";
	my @versions = sort {
			my ($a1, $a2, $a3) = split m/\./ms, $a;
			my ($b1, $b2, $b3) = split m/\./ms, $b;
			$a1 <=> $b1 or $a2 <=> $b2 or $a3 <=> $b3;
		}
		map { -f catfile($dir, $_) && m/^bibframe2marc-(.+)\.xsl$/ms ? $1 : () }
		readdir($dh);
	closedir($dh);

	return @versions;
}

1;

__END__

=pod

=encoding utf8

=head1 NAME

NKC::Transform::BIBFRAME2MARC::Utils - Utilities for bibframe2marc transformations.

=head1 SYNOPSIS

 use NKC::Transform::BIBFRAME2MARC::Utils qw(list_versions);

 my @versions = list_versions($dir);

=head1 SUBROUTINES

=head2 C<list_versions>

 my @versions = list_versions($dir);

Get list of installed versions of bibframe2marc transformations.

C<$dir> is optional. Default value of C<$dir> variables is installation
directory.

Returns list.

=head1 ERRORS

 list_versions():
         Cannot open directory.

=head1 EXAMPLE

=for comment filename=list_versions.pl

 use strict;
 use warnings;

 use File::Temp qw(tempdir);
 use File::Spec::Functions qw(catfile);
 use IO::Barf qw(barf);
 use NKC::Transform::BIBFRAME2MARC::Utils qw(list_versions);

 # Temporary directory.
 my $temp_dir = tempdir(CLEANUP => 1);



( run in 0.517 second using v1.01-cache-2.11-cpan-71847e10f99 )