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 )