+my %licenses = (
+ apache => [ 'Apache-2.0' ],
+ artistic => [ 'Artistic' ],
+ artistic_2 => [ 'Artistic-2' ],
+ bsd => [ 'BSD' ],
+ gpl => [ 'GPL-1' ],
+ gpl2 => [ 'GPL-2' ],
+ gpl3 => [ 'GPL-3' ],
+ lgpl => [ 'LGPL-2.1' ],
+ lgpl2 => [ 'LGPL-2.1' ],
+ lgpl3 => [ 'LGPL-3' ],
+ mit => [ 'MIT' ],
+ mozilla => [ 'MPL-1.1' ],
+ perl => [ 'Artistic', 'GPL-2' ],
+);
+
+sub license_c2g {
+ my %seen;
+
+ grep !$seen{$_}++,
+ map @{$licenses{+lc} || []},
+ grep defined,
+ @_;
+}
+
+=head2 C<version_c2g $name, $version>
+
+Converts the C<$version> of a CPAN distribution C<$name> to a Gentoo version number.
+
+=cut
+
+my $default_mapping = sub {
+ my ($version, @no_strip) = @_;
+
+ my $is_dev = $version =~ /_/;
+ my $has_v = $version =~ s/^v//;
+
+ for ($version) {
+ y/_-//d;
+ s/^\.*//;
+ s/\.*\z//;
+ s/\.+/./g;
+ }
+
+ my $dots = $version =~ y/\.//;
+
+ my @parts;
+ if ($has_v or $dots >= 2) {
+ @parts = split /\./, $version;
+ } else {
+ ($parts[0], my $subversion) = split /\./, $version, 2;
+ $subversion = '0' unless defined $subversion;
+ my $sublen = length $subversion;
+ if ($sublen < 6) {
+ $subversion .= '0' x (6 - $sublen);
+ } else {
+ my $pad = $sublen % 3;
+ $subversion .= '0' x (3 - $pad) if $pad;
+ }
+ push @parts, $subversion =~ /(...)/g;
+ }
+
+ for my $i (0 .. $#parts) {
+ next if $no_strip[$i];
+ $parts[$i] =~ s/^0+([^0]|0\z)/$1/;
+ }
+ $version = join '.', @parts;
+
+ $version .= '_rc' if $is_dev;
+
+ return $version;
+};
+
+my $default_but_ignore_v = sub {
+ my ($version) = @_;
+
+ $version =~ s/^v//;
+
+ return $default_mapping->($version);
+};