File Coverage

blib/lib/Liveman/MinillaPod2Markdown.pm
Criterion Covered Total %
statement 21 25 84.0
branch 2 4 50.0
condition 4 12 33.3
subroutine 5 5 100.0
pod 3 3 100.0
total 35 49 71.4


line stmt bran cond sub pod time code
1             package Liveman::MinillaPod2Markdown;
2:
# Обманка для Minilla, чтобы скопировать Module в README.md 3:
4: use parent qw/Pod::Markdown/;
5:
6: use File::Slurper qw/read_text write_text/;
7:
8: sub new { bless {}, __PACKAGE__ }
9:
10: sub parse_from_file {
11: my ($self, $path) = @_;
12: $self->{pm_path} = $path;
13: $self->{path} = $path =~ s!\.pm$!.md!r;
14: $self
15: }
16:
17: sub as_markdown {
18: my ($self) = @_;
19:
20: my $md = read_text $self->{path};
21: my $pm = read_text $self->{pm_path};
22:
23: my $v = uc "version";
24: my ($md_version) = $md =~ /^#[ \t]+$v\s+([\w.-]{1,32})\s/m;
25: my ($pm_version) = $pm =~ /^our\s+\$$v\s*=\s*["']?([\w.-]{1,32})/m;
26: my ($hd_version) = $pm =~ /^=head1[ \t]+VERSION\s+([\w.-]{1,32})\s/m;
27:
28: if(defined $pm_version and defined $md_version and $pm_version ne $md_version) {
29: $md =~ s/(#[ \t]+$v\s+)[\w.-]{1,32}(\s)/$1$pm_version$2/;
30: write_text $self->{path}, $md;
31: }
32:
33: if(defined $pm_version and defined $hd_version and $pm_version ne $hd_version) {
34: $pm =~ s/^(=head1[ \t]+VERSION\s+)[\w.-]{1,32}(\s)/$1$pm_version$2/m;
35: write_text $self->{pm_path}, $pm;
36: }
37:
38: $md
39: }
40:
41: 1;
42:
43: __END__
44:
45: =encoding utf-8
46:
47: =head1 NAME
48:
49: Liveman::MinillaPod2Markdown - bung for Minilla. It not make README.md
50:
51: =head1 SYNOPSIS
52:
53: use Liveman::MinillaPod2Markdown;
54:
55: my $mark = Liveman::MinillaPod2Markdown->new;
56:
57: $mark->isa("Pod::Markdown") # -> 1
58:
59: use File::Slurper qw/write_text/;
60: write_text "X.md", "hi!";
61: write_text "X.pm", "our \$VERSION = 1.0;";
62:
63: $mark->parse_from_file("X.pm");
64: $mark->{path} # => X.md
65:
66: $mark->as_markdown # => hi!
67:
68: =head1 DESCRIPION
69:
70: Add C<markdown_maker = "Liveman::MinillaPod2Markdown"> to C<minil.toml>, and Minilla do'nt make README.md.
71:
72: =head1 SUBROUTINES
73:
74: =head2 as_markdown ()
75:
76: The bung.
77:
78: =head2 new ()
79:
80: The constructor.
81:
82: =head2 parse_from_file ($path)
83:
84: The bung.
85:
86: =head1 INSTALL
87:
88: For install this module in your system run next LL<https://metacpan.org/pod/App::cpm>:
89:
90: sudo cpm install -gvv Liveman::MinillaPod2Markdown
91:
92: =head1 AUTHOR
93:
94: Yaroslav O. Kosmina LL<mailto:dart@cpan.org>
95:
96: =head1 LICENSE
97:
98: ⚖ B<GPLv3>
99:
100: =head1 COPYRIGHT
101:
102: The Liveman::MinillaPod2Markdown module is copyright © 2023 Yaroslav O. Kosmina. Rusland. All rights reserved.
103: