summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenichi Ishigaki <ishigaki@cpan.org>2013-10-12 01:59:23 +0900
committerKenichi Ishigaki <ishigaki@cpan.org>2013-10-12 01:59:23 +0900
commitfc60eefc231f4c1315e6de2fc8d7c8df8702361f (patch)
treee6b8fe8985be0e9135091b6c146c5aaccda86749
parent8907ea9a936fd03834069fc61f71b23ded13b21e (diff)
keep normalization errors as well
-rw-r--r--lib/Parse/PMFile.pm12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/Parse/PMFile.pm b/lib/Parse/PMFile.pm
index f162d55..6ed2d33 100644
--- a/lib/Parse/PMFile.pm
+++ b/lib/Parse/PMFile.pm
@@ -70,7 +70,11 @@ sub parse {
my $pp = $ppp->{$package};
if ($pp->{version} && $pp->{version} =~ /^\{.*\}$/) { # JSON parser error
my $err = JSON::PP::decode_json($pp->{version});
- if ($err->{openerr}) {
+ if ($err->{x_normalize}) {
+ $errors{$package} = {normalize => $err->{version}};
+ $pp->{version} = "undef";
+ next;
+ } elsif ($err->{openerr}) {
$self->_verbose(1,
qq{Parse::PMFile was not able to
read the file. It issued the following error: C< $err->{r} >},
@@ -452,11 +456,15 @@ sub _normalize_version {
# was found".
return $v ;
}
+ if (!version::is_lax($v)) {
+ return JSON::PP::encode_json({ x_normalize => 'version::is_lax failed', version => $v });
+ }
# may warn "Integer overflow"
my $vv = eval { no warnings; version->new($v)->numify };
if ($@) {
# warn "$v: $@";
- return "undef";
+ return JSON::PP::encode_json({ x_normalize => $@, version => $v });
+ # return "undef";
}
if ($vv eq $v) {
# the boring 3.14