JSON-SchemaValidator
view release on metacpan or search on metacpan
lib/JSON/SchemaValidator.pm view on Meta::CPAN
my ($username, $hostname) = split /@/, $email;
return 0 if length $hostname > 255;
return 0 if grep { length > 63 } split /\./, $hostname;
return 1;
},
ipv4 => sub {
my ($ipv4) = @_;
my @parts = split m/\./, $ipv4;
return unless @parts > 0 && @parts < 5;
for my $part (@parts) {
return unless $part =~ m/^[0-9]+$/ && $part >= 0 && $part < 256;
}
return unless $parts[-1] > 0;
return 1;
},
ipv6 => sub {
my ($ipv6) = @_;
my @parts = split m/\:/, $ipv6;
return unless @parts > 0 && @parts < 9;
for my $part (@parts) {
next if $part eq '';
return unless $part =~ m/^[0-9a-f]{1,4}$/i;
}
return 1;
lib/JSON/SchemaValidator/Pointer.pm view on Meta::CPAN
sub pointer {
my ($json, $pointer) = @_;
return unless $pointer =~ m/^#/;
$pointer = uri_unescape($pointer);
$pointer =~ s{^#/?}{};
my $top = $json;
foreach my $part (split m{/}, $pointer) {
$part =~ s{\~1}{\/}g;
$part =~ s{\~0}{\~}g;
if (ref $top eq 'HASH') {
$top = $top->{$part};
}
elsif (ref $top eq 'ARRAY') {
$top = $top->[$part];
}
}
( run in 2.002 seconds using v1.01-cache-2.11-cpan-71847e10f99 )