#!/usr/bin/env perl
our
$VERSION
= 0.011_000;
$Data::Dumper::Sortkeys
= 1;
print
'ARE YOU AN RPERL SYSTEM DEVELOPER? '
;
my
$stdin_confirm
= <STDIN>;
if
(
$stdin_confirm
=~ /^[Yy]/ ) {
print
'Regenerating Perl API Names...'
.
"\n"
;
}
else
{
exit
;
}
my
$perlapinames_filename
=
'lib/perlapinames_generated.pm'
;
my
$perlapinames_generated
=
<<'EOF';
# THIS FILE IS AUTOMATICALLY GENERATED BY script/development/perlapinames_regenerate.pl
# DO NOT EDIT THIS FILE DIRECTLY!!! please put all changes in perlapinames_regenerate.pl
## no critic qw(Capitalization ProhibitMultiplePackages ProhibitReusedNames) # SYSTEM DEFAULT 3: allow multiple & lower case package names
package # hide from PAUSE indexing
perlapinames_generated;
use strict;
use warnings;
our $VERSION = 0.001_000;
## no critic qw(ProhibitParensWithBuiltins ProhibitNoisyQuotes) # SYSTEM SPECIAL 3: allow auto-generated code
EOF
my
string
$input_filename
=
$ARGV
[0];
print
'have input $input_filename = '
,
$input_filename
,
"\n"
;
my
string_arrayref
$perl_functions_documented
= [];
my
string_arrayref
$perl_functions_undocumented
= [];
my
string_arrayref
$perl_variables_documented
= [];
my
string_arrayref
$perl_variables_undocumented
= [];
my
boolean
$documented
= 1;
open
my
filehandleref
$FILE_HANDLE
,
'<'
,
$input_filename
or croak
'ERROR, Cannot open file '
.
$input_filename
.
' for reading,'
.
$OS_ERROR
.
', croaking'
;
while
(
my
$input_line
= <
$FILE_HANDLE
> ) {
if
(
$documented
) {
if
(
$input_line
eq
'<a name="Undocumented-functions"></a><h1>Undocumented functions</h1>'
.
"\n"
) {
$documented
= 0;
}
if
(
$input_line
=~ m/^<li><a\ name=
"\w+"
><\/a><b>(\w+)$/gxms) {
push
@{
$perl_functions_documented
}, $1;
if
(((
substr
$1, 0, 4) eq
'get_'
) or ((
substr
$1, 0, 4) eq
'set_'
)) {
push
@{
$perl_variables_documented
}, (
substr
$1, 4);
}
}
}
else
{
if
(
$input_line
=~ m/^<li><a\ name=
"\w+"
><\/a><b>(\w+)$/gxms) {
push
@{
$perl_functions_undocumented
}, $1;
if
(((
substr
$1, 0, 4) eq
'get_'
) or ((
substr
$1, 0, 4) eq
'set_'
)) {
push
@{
$perl_variables_undocumented
}, (
substr
$1, 4);
}
}
}
}
close
$FILE_HANDLE
or croak
'ERROR, Cannot close file '
.
$input_filename
.
' after reading,'
.
$OS_ERROR
.
', croaking'
;
$perlapinames_generated
.=
'$perlapinames_generated::FUNCTIONS_DOCUMENTED = undef;'
.
"\n"
;
$perlapinames_generated
.=
'$perlapinames_generated::FUNCTIONS_DOCUMENTED = {'
.
"\n"
;
foreach
my
string
$perl_function_documented
(uniq
sort
@{
$perl_functions_documented
}) {
$perlapinames_generated
.=
q{ '}
.
$perl_function_documented
.
q{' => 1,}
.
"\n"
;
}
$perlapinames_generated
.=
'};'
.
"\n\n"
;
$perlapinames_generated
.=
'$perlapinames_generated::FUNCTIONS_UNDOCUMENTED = undef;'
.
"\n"
;
$perlapinames_generated
.=
'$perlapinames_generated::FUNCTIONS_UNDOCUMENTED = {'
.
"\n"
;
foreach
my
string
$perl_function_undocumented
(uniq
sort
@{
$perl_functions_undocumented
}) {
$perlapinames_generated
.=
q{ '}
.
$perl_function_undocumented
.
q{' => 1,}
.
"\n"
;
}
$perlapinames_generated
.=
'};'
.
"\n\n"
;
$perlapinames_generated
.=
'$perlapinames_generated::VARIABLES_DOCUMENTED = undef;'
.
"\n"
;
$perlapinames_generated
.=
'$perlapinames_generated::VARIABLES_DOCUMENTED = {'
.
"\n"
;
foreach
my
string
$perl_function_documented
(uniq
sort
@{
$perl_variables_documented
}) {
$perlapinames_generated
.=
q{ '}
.
$perl_function_documented
.
q{' => 1,}
.
"\n"
;
}
$perlapinames_generated
.=
'};'
.
"\n\n"
;
$perlapinames_generated
.=
'$perlapinames_generated::VARIABLES_UNDOCUMENTED = undef;'
.
"\n"
;
$perlapinames_generated
.=
'$perlapinames_generated::VARIABLES_UNDOCUMENTED = {'
.
"\n"
;
foreach
my
string
$perl_function_undocumented
(uniq
sort
@{
$perl_variables_undocumented
}) {
$perlapinames_generated
.=
q{ '}
.
$perl_function_undocumented
.
q{' => 1,}
.
"\n"
;
}
$perlapinames_generated
.=
'};'
.
"\n\n"
;
$perlapinames_generated
.=
'1; # end of package'
.
"\n"
;
my
$open_close_retval
=
open
my
$PERLAPINAMES_FILEHANDLE_OUT
,
'>'
,
$perlapinames_filename
;
if
( not
$open_close_retval
) {
croak(
'ERROR ERPNS00: Problem opening output file '
.
q{'}
.
$perlapinames_filename
.
q{': }
.
$OS_ERROR
,
'croaking'
);
}
print
{
$PERLAPINAMES_FILEHANDLE_OUT
}
$perlapinames_generated
;
$open_close_retval
=
close
$PERLAPINAMES_FILEHANDLE_OUT
;
if
( not
$open_close_retval
) {
croak(
'ERROR ERPNS01: Problem closing output file '
.
q{'}
.
$perlapinames_filename
.
q{': }
.
$OS_ERROR
,
'croaking'
);
}
system
'perltidy'
,
'-pbp'
,
'--ignore-side-comment-lengths'
,
'--converge'
,
'-b'
,
'-nst'
,
q{-bext='/'}
,
'-q'
,
$perlapinames_filename
;
print
'Regenerating Perl API Names... DONE!'
.
"\n"
;