Sah-SchemaBundle-Perl
view release on metacpan or search on metacpan
lib/Sah/Schema/perl/filename.pm view on Meta::CPAN
lib/Foo/Bar.pod
To prevent such coercion, you can use prefixing path, e.g.:
./Foo::Bar
../Foo/Bar
/path/to/Foo/Bar
This schema comes with convenience completion too.
_
'x.perl.coerce_rules' => [
'From_str::convert_perl_pm_or_pod_to_path',
],
'x.completion' => sub {
require Complete::File;
require Complete::Module;
require Complete::Util;
my %args = @_;
my $word = $args{word};
my @answers;
push @answers, Complete::File::complete_file(word => $word);
if ($word =~ m!\A\w*((?:::|/)\w+)*\z!) {
push @answers, Complete::Module::complete_module(word => $word);
}
Complete::Util::combine_answers(@answers);
},
}];
1;
# ABSTRACT: Filename of Perl script/module/POD, e.g. /path/Foo/Bar.pm
__END__
=pod
=encoding UTF-8
=head1 NAME
Sah::Schema::perl::filename - Filename of Perl script/module/POD, e.g. /path/Foo/Bar.pm
=head1 VERSION
This document describes version 0.050 of Sah::Schema::perl::filename (from Perl distribution Sah-SchemaBundle-Perl), released on 2024-02-16.
=head1 SAH SCHEMA DEFINITION
[
"str",
{
"summary" => "Filename of Perl script/module/POD, e.g. /path/Foo/Bar.pm",
"x.completion" => sub {
package Sah::Schema::perl::filename;
use warnings;
use strict;
no feature ':all';
use feature ':5.10';
require Complete::File;
require Complete::Module;
require Complete::Util;
my(%args) = @_;
my $word = $args{'word'};
my @answers;
push @answers, Complete::File::complete_file('word', $word);
if ($word =~ m[\A\w*((?:::|/)\w+)*\z]) {
push @answers, Complete::Module::complete_module('word', $word);
}
Complete::Util::combine_answers(@answers);
},
"x.perl.coerce_rules" => ["From_str::convert_perl_pm_or_pod_to_path"],
},
]
Base type: L<str|Data::Sah::Type::str>
Used completion: L<CODE(0x55f2607576e8)|Perinci::Sub::XCompletion::CODE(0x55f2607576e8)>
=head1 SYNOPSIS
=head2 Using with Data::Sah
To check data against this schema (requires L<Data::Sah>):
use Data::Sah qw(gen_validator);
my $validator = gen_validator("perl::filename*");
say $validator->($data) ? "valid" : "INVALID!";
The above validator returns a boolean result (true if data is valid, false if
otherwise). To return an error message string instead (empty string if data is
valid, a non-empty error message otherwise):
my $validator = gen_validator("perl::filename", {return_type=>'str_errmsg'});
my $errmsg = $validator->($data);
Often a schema has coercion rule or default value rules, so after validation the
validated value will be different from the original. To return the validated
(set-as-default, coerced, prefiltered) value:
my $validator = gen_validator("perl::filename", {return_type=>'str_errmsg+val'});
my $res = $validator->($data); # [$errmsg, $validated_val]
Data::Sah can also create validator that returns a hash of detailed error
message. Data::Sah can even create validator that targets other language, like
JavaScript, from the same schema. Other things Data::Sah can do: show source
code for validator, generate a validator code with debug comments and/or log
statements, generate human text from schema. See its documentation for more
details.
=head2 Using with Params::Sah
To validate function parameters against this schema (requires L<Params::Sah>):
use Params::Sah qw(gen_validator);
sub myfunc {
my @args = @_;
( run in 1.189 second using v1.01-cache-2.11-cpan-97f6503c9c8 )