File Coverage

blib/lib/Data/Sah/Coerce/perl/To_str/From_str/convert_perl_pm_to_path.pm
Criterion Covered Total %
statement 16 16 100.0
branch n/a
condition 1 2 50.0
subroutine 5 5 100.0
pod 0 2 0.0
total 22 25 88.0


line stmt bran cond sub pod time code
1              
2             use 5.010001;
3 1     1   5865 use strict;
  1         4  
4 1     1   5 use warnings;
  1         1  
  1         17  
5 1     1   4  
  1         1  
  1         241  
6             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
7             our $DATE = '2022-09-11'; # DATE
8             our $DIST = 'Sah-Schemas-Perl'; # DIST
9             our $VERSION = '0.045'; # VERSION
10              
11             +{
12             v => 4,
13             summary => 'Convert module name existing in @INC to its filesystem path',
14 1     1 0 11 prio => 50,
15             };
16             }
17              
18             my %args = @_;
19              
20             my $dt = $args{data_term};
21 1     1 0 13  
22             my $res = {};
23 1         2  
24             $res->{modules}{'Module::Path::More'} //= {version=>0, core=>0, pp=>1};
25 1         2 $res->{expr_match} = "1";
26             $res->{expr_coerce} = join(
27 1   50     8 "",
28 1         2 "do { ",
29 1         4 "my \$_sahc_orig = $dt; ",
30             "if (\$_sahc_orig =~ m!\\A\\w+((?:/|::)\\w+)*(?:\\.pm)?\\z!) {",
31             " (my \$tmp = \$_sahc_orig) =~ s!/!::!g; my \$ext; \$tmp =~ s/\\.(pm)\\z// and \$ext = \$1;",
32             " Module::Path::More::module_path(module=>\$tmp, find_pm=>!\$ext || \$ext eq 'pm', find_pod=>0, find_prefix=>0, find_pmc=>0) || \$_sahc_orig ",
33             "} else {",
34             " \$_sahc_orig ",
35             "} ",
36             "}",
37             );
38              
39             $res;
40             }
41              
42 1         3 1;
43             # ABSTRACT:
44              
45              
46             =pod
47              
48             =encoding UTF-8
49              
50             =head1 NAME
51              
52             Data::Sah::Coerce::perl::To_str::From_str::convert_perl_pm_to_path
53              
54             =head1 VERSION
55              
56             This document describes version 0.045 of Data::Sah::Coerce::perl::To_str::From_str::convert_perl_pm_to_path (from Perl distribution Sah-Schemas-Perl), released on 2022-09-11.
57              
58             =head1 DESCRIPTION
59              
60             This rule can convert strings in the form of:
61              
62             Foo::Bar
63             Foo/Bar
64             Foo/Bar.pm
65              
66             into the filesystem path (e.g.
67             C</home/ujang/perl5/perlbrew/perls/perl-5.24.0/lib/site_perl/5.24.0/Foo/Bar.pm>)
68             when the module exists in C<@INC>. Otherwise, it leaves the string as-is.
69              
70             =for Pod::Coverage ^(meta|coerce)$
71              
72             =head1 HOMEPAGE
73              
74             Please visit the project's homepage at L<https://metacpan.org/release/Sah-Schemas-Perl>.
75              
76             =head1 SOURCE
77              
78             Source repository is at L<https://github.com/perlancar/perl-Sah-Schemas-Perl>.
79              
80             =head1 AUTHOR
81              
82             perlancar <perlancar@cpan.org>
83              
84             =head1 CONTRIBUTING
85              
86              
87             To contribute, you can send patches by email/via RT, or send pull requests on
88             GitHub.
89              
90             Most of the time, you don't need to build the distribution yourself. You can
91             simply modify the code, then test via:
92              
93             % prove -l
94              
95             If you want to build the distribution (e.g. to try to install it locally on your
96             system), you can install L<Dist::Zilla>,
97             L<Dist::Zilla::PluginBundle::Author::PERLANCAR>,
98             L<Pod::Weaver::PluginBundle::Author::PERLANCAR>, and sometimes one or two other
99             Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond
100             that are considered a bug and can be reported to me.
101              
102             =head1 COPYRIGHT AND LICENSE
103              
104             This software is copyright (c) 2022, 2021, 2020, 2019, 2018, 2017, 2016 by perlancar <perlancar@cpan.org>.
105              
106             This is free software; you can redistribute it and/or modify it under
107             the same terms as the Perl 5 programming language system itself.
108              
109             =head1 BUGS
110              
111             Please report any bugs or feature requests on the bugtracker website L<https://rt.cpan.org/Public/Dist/Display.html?Name=Sah-Schemas-Perl>
112              
113             When submitting a bug or request, please include a test-file or a
114             patch to an existing test-file that illustrates the bug or desired
115             feature.
116              
117             =cut