—## no critic: TestingAndDebugging::RequireStrict
package
Sah::SchemaR::perl::filename;
# preamble code
no
warnings
'experimental::regex_sets'
;
our
$DATE
=
'2024-02-16'
;
# DATE
our
$VERSION
=
'0.050'
;
# VERSION
our
$rschema
=
do
{
my
$var
={
base
=>
"str"
,
clsets_after_base
=>[{
description
=>
"\nUse this schema if you want to accept a filesystem path containing Perl script,\nmodule, or POD. The value of this schema is in the convenience of CLI\ncompletion, as well as coercion from script or module name.\n\nString containing filename of a Perl script or module or POD. For convenience,\nwhen value is in the form of:\n\n Foo\n Foo.pm\n Foo.pod\n Foo::Bar\n Foo/Bar\n Foo/Bar.pm\n Foo/Bar.pod\n\nand a matching .pod or .pm file is found in `\@INC`, then it will be coerced\n(converted) into the path of that .pod/.pm file, e.g.:\n\n /home/ujang/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/Foo/Bar.pm\n lib/Foo/Bar.pod\n\nTo prevent such coercion, you can use prefixing path, e.g.:\n\n ./Foo::Bar\n ../Foo/Bar\n /path/to/Foo/Bar\n\nThis schema comes with convenience completion too.\n\n"
,
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;
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"
]}],
clsets_after_type
=>[
'$var->{clsets_after_base}[0]'
],
"clsets_after_type.alt.merge.merged"
=>[
'$var->{clsets_after_base}[0]'
],
resolve_path
=>[
"str"
],
type
=>
"str"
,
v
=>2};
$var
->{clsets_after_type}[0]=
$var
->{clsets_after_base}[0];
$var
->{
"clsets_after_type.alt.merge.merged"
}[0]=
$var
->{clsets_after_base}[0];
$var
};
1;
# ABSTRACT: Filename of Perl script/module/POD, e.g. /path/Foo/Bar.pm
__END__
=pod
=encoding UTF-8
=head1 NAME
Sah::SchemaR::perl::filename - Filename of Perl script/module/POD, e.g. /path/Foo/Bar.pm
=head1 VERSION
This document describes version 0.050 of Sah::SchemaR::perl::filename (from Perl distribution Sah-SchemaBundle-Perl), released on 2024-02-16.
=head1 DESCRIPTION
This module is automatically generated by Dist::Zilla::Plugin::Sah::SchemaBundle during distribution build.
A Sah::SchemaR::* module is useful if a client wants to quickly lookup the base type of a schema without having to do any extra resolving. With Sah::Schema::*, one might need to do several lookups if a schema is based on another schema, and so on. Compare for example L<Sah::Schema::poseven> vs L<Sah::SchemaR::poseven>, where in Sah::SchemaR::poseven one can immediately get that the base type is C<int>. Currently L<Perinci::Sub::Complete> uses Sah::SchemaR::* instead of Sah::Schema::* for reduced startup overhead when doing tab completion.
=head1 HOMEPAGE
Please visit the project's homepage at L<https://metacpan.org/release/Sah-SchemaBundle-Perl>.
=head1 SOURCE
Source repository is at L<https://github.com/perlancar/perl-Sah-SchemaBundle-Perl>.
=head1 AUTHOR
perlancar <perlancar@cpan.org>
=head1 CONTRIBUTING
To contribute, you can send patches by email/via RT, or send pull requests on
GitHub.
Most of the time, you don't need to build the distribution yourself. You can
simply modify the code, then test via:
% prove -l
If you want to build the distribution (e.g. to try to install it locally on your
system), you can install L<Dist::Zilla>,
L<Dist::Zilla::PluginBundle::Author::PERLANCAR>,
L<Pod::Weaver::PluginBundle::Author::PERLANCAR>, and sometimes one or two other
Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond
that are considered a bug and can be reported to me.
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016 by perlancar <perlancar@cpan.org>.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=head1 BUGS
Please report any bugs or feature requests on the bugtracker website L<https://rt.cpan.org/Public/Dist/Display.html?Name=Sah-SchemaBundle-Perl>
When submitting a bug or request, please include a test-file or a
patch to an existing test-file that illustrates the bug or desired
feature.
=cut