From: Marius Gavrilescu Date: Fri, 17 Jul 2015 10:14:48 +0000 (+0300) Subject: Import version 0.17 from CPAN X-Git-Tag: 0.18~18 X-Git-Url: http://git.ieval.ro/?p=pod-constants.git;a=commitdiff_plain;h=f46dd377015ec2bea19d88d0c38c6f850029d4a0 Import version 0.17 from CPAN --- f46dd377015ec2bea19d88d0c38c6f850029d4a0 diff --git a/Changes b/Changes new file mode 100644 index 0000000..d1c12de --- /dev/null +++ b/Changes @@ -0,0 +1,36 @@ +Revision history for Perl extension Pod::Constants. + +0.16 Sun Oct 21 21:55:59 NZDT 2007 + - Lots of boring release engineering. Imported to git, etc. + Removed the debian/ directory. Updated the license (now not + just Artistic) + +0.15 Mon Apr 8 19:43:38 BST 2002 + - Really fixed lack of re-entrancy, added test script for same + +0.14 Mon Apr 8 17:34:35 BST 2002 + - Fixed lack of re-entrancy + - Fixed CR/LF handling properly + +0.13 Wed Jan 23 16:55:59 GMT 2002 + - Fixed regular expression bug affecting perl + versions <= 5.005. + +0.12 Mon Dec 10 16:21:54 GMT 2001 + - Added add_hook and delete_hook function + - more details on man page + +0.11 Tue Nov 20 18:24:34 GMT 2001 + - Corrected man page, added section on automatic Makefile.PL + generation + +0.10 Sat Nov 10 01:14:00 GMT 2001 + - Added support for importing data into hashes, arrays, and + processing with closures. + - not released to world at large (man page incorrect) + +0.02 Fri Nov 2 04:15:54 GMT 2001 + - now handles "perl -c Module.pm" properly + +0.01 Mon Oct 15 19:39:20 2001 + - original version. scalars only. diff --git a/Constants.pm b/Constants.pm new file mode 100644 index 0000000..4a3363a --- /dev/null +++ b/Constants.pm @@ -0,0 +1,518 @@ +# Copyright (C) 2001, 2002, 2007 Sam Vilain. All Rights Reserved. +# This module is free software. It may be used, redistributed and/or +# modified under the terms of the Perl Artistic License, version 2 or +# later, OR the terms of the GNU General Public License, v3 or later. + +package Pod::Constants; + +=head1 NAME + +Pod::Constants - Include constants from POD + +=head1 SYNOPSIS + + use vars qw($myvar $VERSION @myarray $html %myhash); + + use Pod::Constants -trim => 1, + 'Pod Section Name' => \$myvar, + 'Version' => sub { eval }, + 'Some list' => \@myarray, + html => \$html, + 'Some hash' => \%myhash; + + =head2 Pod Section Name + + This string will be loaded into $myvar + + =head2 Version + + # This is an example of using a closure. $_ is set to the + # contents of the paragraph. In this example, "eval" is + # used to execute this code at run time. + $VERSION = 0.17; + + =head2 Some list + + Each line from this section of the file + will be placed into a seperate array element. + For example, this is $myarray[2]. + + =head2 Some hash + + This text will not go into the hash, because + it doesn't look like a definition list. + key1 => Some value (this will go into the hash) + var2 => Some Other value (so will this) + wtf = This won't make it in. + + =head2 %myhash's value after the above: + + ( key1 => "Some value (this will go into the hash)", + var2 => "Some Other value (so will this)" ) + + =begin html

This text will be in $html

+ + =cut + +=head1 DESCRIPTION + +This module allows you to specify those constants that should be +documented in your POD, and pull them out a run time in a fairly +arbitrary fashion. + +Pod::Constants uses Pod::Parser to do the parsing of the source file. +It has to open the source file it is called from, and does so directly +either by lookup in %INC or by assuming it is $0 if the caller is +"main" (or it can't find %INC{caller()}) + +=head2 ARBITARY DECISIONS + +I have made this code only allow the "Pod Section Name" to match +`headN', `item', `for' and `begin' POD sections. If you have a good +reason why you think it should match other POD sections, drop me a +line and if I'm convinced I'll put it in the standard version. + +For `for' and `begin' sections, only the first word is counted as +being a part of the specifier, as opposed to `headN' and `item', where +the entire rest of the line counts. + +=cut + +use 5.004; +use strict; + +use base qw(Pod::Parser Exporter); +use Data::Dumper; +use Carp; + +use vars qw($VERSION); +$VERSION = 0.17; + +# An ugly hack to go from caller() to the relevant parser state +# variable +my %parsers; + +sub end_input { + #my ($parser, $command, $paragraph, $line_num) = (@_); + my $parser = shift; + + return unless $parser->{active}; + + print "Found end of $parser->{active}\n" if ($parser->{DEBUG}); + my $whereto = $parser->{wanted_pod_tags}->{$parser->{active}}; + print "\$_ will be set to:\n---\n$parser->{paragraphs}\n---\n" + if ($parser->{DEBUG}); + + $parser->{paragraphs} =~ s/^\s*|\s*$//gs + if $parser->{trimmed_tags}->{$parser->{active}}; + + if (ref $whereto eq "CODE") { + print "calling sub\n" if $parser->{DEBUG}; + local ($_) = $parser->{paragraphs}; + $whereto->(); + print "done\n" if $parser->{DEBUG}; + } elsif (ref $whereto eq "SCALAR") { + print "inserting into scalar\n" if $parser->{DEBUG}; + $$whereto = $parser->{paragraphs}; + } elsif (ref $whereto eq "ARRAY") { + print "inserting into array\n" if $parser->{DEBUG}; + @$whereto = split /\n/, $parser->{paragraphs}; + } elsif (ref $whereto eq "HASH") { + print "inserting into hash\n" if $parser->{DEBUG}; + # Oh, sorry, should I be in LISP101? + %$whereto = (map { map { s/^\s*|\s*$//g; $_ } + split /=>/, $_ } + grep m/^ + ( (?:[^=]|=[^>])+ ) # scan up to "=>" + => + ( (?:[^=]|=[^>])+ =? )# don't allow more "=>"'s + $/x, + split /\n/, $parser->{paragraphs}); + } else { die $whereto } + $parser->{active} = undef; +} + +# Pod::Parser overloaded command +sub command { + my ($parser, $command, $paragraph, $line_num) = @_; + + $paragraph =~ s/(?:\r\n|\n\r)/\n/g; + + print "Got command =$command, value=$paragraph\n" + if $parser->{DEBUG}; + + $parser->end_input() if $parser->{active}; + + my $does_she_want_it_sir; + + my ($lookup); + # first check for a catch-all for this command type + if ( exists $parser->{wanted_pod_tags}->{"*$command"} ) { + $parser->{paragraphs} = $paragraph; + $parser->{active} = "*$command"; + $does_she_want_it_sir = "oohw"; + + } elsif ($command =~ m/^(head\d+|item|(for|begin))$/) { + if ( $2 ) { + # if it's a "for" or "begin" section, the title is the + # first word only + ($lookup, $parser->{paragraphs}) = + ($paragraph =~ m/^\s*(\S*)\s*(.*)/s); + } else { + # otherwise, it's up to the end of the line + ($lookup, $parser->{paragraphs}) + = ($paragraph =~ m/^\s*(\S[^\n]*?)\s*\n(.*)$/s); + } + + # Look for a match by name + if (defined $lookup + and exists $parser->{wanted_pod_tags}->{$lookup}) { + print "Found $lookup\n" if ($parser->{DEBUG}); + $parser->{active} = $lookup; + $does_she_want_it_sir = "suits you sir"; + } + + } else { + # nothing + print "Ignoring =$command (not known)\n" if $parser->{DEBUG}; + } + + { + local $^W = 0; + print "Ignoring =$command $paragraph (lookup = $lookup)\n" + if (!$does_she_want_it_sir and $parser->{DEBUG}) + } +} + +# Pod::Parser overloaded verbatim +sub verbatim { + my ($parser, $paragraph, $line_num) = @_; + $paragraph =~ s/(?:\r\n|\n\r)/\n/g; + + print("Got paragraph: $paragraph (" + .($parser->{active}?"using":"ignoring").")\n") + if $parser->{DEBUG}; + + if (defined $parser->{active}) { + $parser->{paragraphs} .= $paragraph; + } +} + +# Pod::Parser overloaded textblock +sub textblock { goto \&verbatim } + +=head1 FUNCTIONS + +=head2 import(@args) + +This function is called when we are "use"'d. It determines the source +file by inspecting the value of caller() or $0. + +The form of @args is HOOK => $where. + +$where may be a scalar reference, in which case the contents of the +POD section called "HOOK" will be loaded into $where. + +$where may be an array reference, in which case the contents of the +array will be the contents of the POD section called "HOOK", split +into lines. + +$where may be a hash reference, in which case any lines with a "=>" +symbol present will have everything on the left have side of the => +operator as keys and everything on the right as values. You do not +need to quote either, nor have trailing commas at the end of the +lines. + +$where may be a code reference (sub { }), in which case the sub is +called when the hook is encountered. $_ is set to the value of the +POD paragraph. + +You may also specify the behaviour of whitespace trimming; by default, +no trimming is done except on the HOOK names. Setting "-trim => 1" +turns on a package "global" (until the next time import is called) +that will trim the $_ sent for processing by the hook processing +function (be it a given function, or the built-in array/hash +splitters) for leading and trailing whitespace. + +The name of HOOK is matched against any "=head1", "=head2", "=item", +"=for", "=begin" value. If you specify the special hooknames "*item", +"*head1", etc, then you will get a function that is run for every + +Note that the supplied functions for array and hash splitting are +exactly equivalent to fairly simple Perl blocks: + +Array: + + HOOK => sub { @array = split /\n/, $_ } + +Hash: + + HOOK => sub { + %hash = + (map { map { s/^\s+|\s+$//g; $_ } split /=>/, $_ } + (grep m/^ + ( (?:[^=]|=[^>])+ ) # scan up to "=>" + => + ( (?:[^=]|=[^>])+ =? )# don't allow more "=>"'s + $/x, split /\n/, $_)); + } + +Well, they're simple if you can grok map, a regular expression like +that and a functional programming style. If you can't I'm sure it is +probably voodoo to you. + +Here's the procedural equivalent: + + HOOK => sub { + for my $line (split /\n/, $_) { + my ($key, $value, $junk) = split /=>/, $line; + next if $junk; + $key =~ s/^\s+|\s+$//g + $value =~ s/^\s+|\s+$//g + $hash{$key} = $value; + } + }, + +=cut + +sub import { + my $class = shift; + + # if no args, just return + return unless (@_); + + # try to guess the source file of the caller + my $source_file; + if (caller ne "main") { + (my $module = caller().".pm") =~ s|::|/|g; + $source_file = $INC{$module}; + } + $source_file ||= $0; + + ( -f $source_file ) + or croak ("Cannot find source file (guessed $source_file) for" + ." package ".caller()); + + # nasty tricks with the stack so we don't have to be silly with + # caller() + unshift @_, $source_file; + goto \&import_from_file; +} + +=head2 import_from_file($filename, @args) + +Very similar to straight "import", but you specify the source filename +explicitly. + +=cut + +use IO::Handle; + +sub import_from_file { + my $filename = shift; + + my $parser = __PACKAGE__->new(); + + $parser->{wanted_pod_tags} = {}; + $parser->{trimmed_tags} = {}; + $parser->{trim_next} = 0; + $parser->{DEBUG} = 0; + $parser->{active} = undef; + $parsers{caller()} = $parser; + + $parser->add_hook(@_); + + print "Pod::Parser: DEBUG: Opening $filename for reading\n" + if $parser->{DEBUG}; + my $fh = new IO::Handle; + open $fh, "<$filename" + or die ("cannot open $filename for reading; $!"); + + $parser->parse_from_filehandle($fh, \*STDOUT); + + close $fh; +} + +=head2 add_hook(NAME => value) + +This function adds another hook, it is useful for dynamic updating of +parsing through the document. + +For an example, please see t/01-constants.t in the source +distribution. More detailed examples will be added in a later +release. + +=cut + +sub add_hook { + my $parser; + if ( UNIVERSAL::isa($_[0], __PACKAGE__) ) { + $parser = shift; + } else { + $parser = $parsers{caller()} + or die("add_hook called, but don't know what for - " + ."caller = ".caller()); + } + while (my ($pod_tag, $var) = splice @_, 0, 2) { + #print "$pod_tag: $var\n"; + if (lc($pod_tag) eq "-trim") { + $parser->{trim_next} = $var; + } elsif ( lc($pod_tag) eq "-debug" ) { + $parser->{DEBUG} = $var; + } elsif (lc($pod_tag) eq "-usage") { + # an idea for later - automatic "usage" + #%wanted_pod_tags{@tags} + } else { + if ((ref $var) =~ /^(?:SCALAR|CODE|ARRAY|HASH)$/) { + print "Will look for $pod_tag.\n" + if ($parser->{DEBUG}); + $parser->{wanted_pod_tags}->{$pod_tag} = $var; + $parser->{trimmed_tags}->{$pod_tag} = 1 + if $parser->{trim_next}; + } else { + die ("Sorry - need a reference to import POD " + ."sections into, not the scalar value $var" + ." importing $pod_tag into ".caller()); + } + } + } +} + +=head2 delete_hook(@list) + +Deletes the named hooks. Companion function to add_hook + +=cut + +sub delete_hook { + my $parser; + if ( UNIVERSAL::isa($_[0], __PACKAGE__) ) { + $parser = shift; + } else { + $parser = $parsers{caller()} + or die("delete_hook called, but don't know what for - " + ."caller = ".caller()); + } + while ( my $label = shift ) { + delete $parser->{wanted_pod_tags}->{$label}; + delete $parser->{trimmed_tags}->{$label}; + } +} + +=head2 CLOSURES AS DESTINATIONS + +If the given value is a ref CODE, then that function is called, with +$_ set to the value of the paragraph. This can be very useful for +applying your own custom mutations to the POD to change it from human +readable text into something your program can use. + +After I added this function, I just kept on thinking of cool uses for +it. The nice, succinct code you can make with it is one of +Pod::Constant's strongest features. + +Below are some examples. + +=head1 EXAMPLES + +=head2 Module Makefile.PL maintenance + +Tired of keeping those module Makefile.PL's up to date? Note: This +method seems to break dh-make-perl. + +=head2 Example Makefile.PL + + eval "use Pod::Constants"; + ($Pod::Constants::VERSION >= 0.11) + or die < sub { ($VERSION) = m/(\d+\.\d+)/ }, + 'DEPENDANCIES' => ($PREREQ_PM = { }), + -trim => 1, + 'NAME' => sub { $ABSTRACT=$_; ($NAME) = m/(\S+)/ }, + 'AUTHOR' => \$AUTHOR, + ); + + WriteMakefile + ( + 'NAME' => $NAME, + 'PREREQ_PM' => $PREREQ_PM, + 'VERSION' => $VERSION, + ($] >= 5.005 ? ## Add these new keywords supported since 5.005 + (ABSTRACT => $ABSTRACT, + AUTHOR => $AUTHOR) : ()), + ); + +=head2 Corresponding Module + + =head1 NAME + + MyTestModule - Demonstrate Pod::Constant's Makefile.PL usefulness + + =head2 MODULE RELEASE + + This is release 1.05 of this module. + + =head2 DEPENDANCIES + + The following modules are required to make this module: + + Some::Module => 0.02 + + =head2 AUTHOR + + Ima Twat + + =cut + + use vars qw($VERSION); + use Pod::Constants -trim => 1, + 'MODULE RELEASE' => sub { ($VERSION) = m/(\d+\.\d+) or die }; + +=head1 AUTHOR + +Sam Vilain, + +=head1 BUGS/TODO + +I keep thinking it would be nice to be able to import an =item list +into an array or something, eg for a program argument list. But I'm +not too sure how it would be all that useful in practice; you'd end up +putting the function names for callbacks in the pod or something +(perhaps not all that bad). + +Would this be useful? + + Pod::Constants::import(Foo::SECTION => \$myvar); + +Debug output is not very readable + +=head1 PATCHES WELCOME + +If you have any suggestions for enhancements, they are much more likely +to happen if you submit them as a patch to the distribution. + +Source is kept at + + git://utsl.gen.nz/Pod-Constants + +=cut + +BEGIN { + Pod::Constants->import + ( + SYNOPSIS => sub { + eval pop @{[ grep /^\s*\$VERSION/, split /\n/, $_ ]} + } + ) +}; + +1.4142; diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..a817cf4 --- /dev/null +++ b/MANIFEST @@ -0,0 +1,15 @@ +Changes +Constants.pm +Makefile +Makefile.PL +MANIFEST +MYMETA.json +MYMETA.yml +README +SIGNATURE +t/01-constants.t +t/cheese.pl +t/Cheese.pm +t/ReEntrancyTest.pm +META.yml Module YAML meta-data (added by MakeMaker) +META.json Module JSON meta-data (added by MakeMaker) diff --git a/META.json b/META.json new file mode 100644 index 0000000..0159720 --- /dev/null +++ b/META.json @@ -0,0 +1,42 @@ +{ + "abstract" : "Include constants from POD", + "author" : [ + "Sam Vilain " + ], + "dynamic_config" : 1, + "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690", + "license" : [ + "unknown" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "Pod-Constants", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : { + "Pod::Parser" : "1.13", + "Test::Simple" : "0.18" + } + } + }, + "release_status" : "stable", + "version" : 0.17 +} diff --git a/META.yml b/META.yml new file mode 100644 index 0000000..8d28376 --- /dev/null +++ b/META.yml @@ -0,0 +1,23 @@ +--- +abstract: 'Include constants from POD' +author: + - 'Sam Vilain ' +build_requires: + ExtUtils::MakeMaker: '0' +configure_requires: + ExtUtils::MakeMaker: '0' +dynamic_config: 1 +generated_by: 'ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690' +license: unknown +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: Pod-Constants +no_index: + directory: + - t + - inc +requires: + Pod::Parser: '1.13' + Test::Simple: '0.18' +version: 0.17 diff --git a/MYMETA.json b/MYMETA.json new file mode 100644 index 0000000..9ee51a9 --- /dev/null +++ b/MYMETA.json @@ -0,0 +1,42 @@ +{ + "abstract" : "Include constants from POD", + "author" : [ + "Sam Vilain " + ], + "dynamic_config" : 0, + "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690", + "license" : [ + "unknown" + ], + "meta-spec" : { + "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", + "version" : "2" + }, + "name" : "Pod-Constants", + "no_index" : { + "directory" : [ + "t", + "inc" + ] + }, + "prereqs" : { + "build" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "configure" : { + "requires" : { + "ExtUtils::MakeMaker" : "0" + } + }, + "runtime" : { + "requires" : { + "Pod::Parser" : "1.13", + "Test::Simple" : "0.18" + } + } + }, + "release_status" : "stable", + "version" : 0.17 +} diff --git a/MYMETA.yml b/MYMETA.yml new file mode 100644 index 0000000..8e9f1f4 --- /dev/null +++ b/MYMETA.yml @@ -0,0 +1,23 @@ +--- +abstract: 'Include constants from POD' +author: + - 'Sam Vilain ' +build_requires: + ExtUtils::MakeMaker: '0' +configure_requires: + ExtUtils::MakeMaker: '0' +dynamic_config: 0 +generated_by: 'ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690' +license: unknown +meta-spec: + url: http://module-build.sourceforge.net/META-spec-v1.4.html + version: '1.4' +name: Pod-Constants +no_index: + directory: + - t + - inc +requires: + Pod::Parser: '1.13' + Test::Simple: '0.18' +version: 0.17 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c67a548 --- /dev/null +++ b/Makefile @@ -0,0 +1,850 @@ +# This Makefile is for the Pod::Constants extension to perl. +# +# It was generated automatically by MakeMaker version +# 6.98 (Revision: 69800) from the contents of +# Makefile.PL. Don't edit this file, edit Makefile.PL instead. +# +# ANY CHANGES MADE HERE WILL BE LOST! +# +# MakeMaker ARGV: () +# + +# MakeMaker Parameters: + +# ABSTRACT_FROM => q[Constants.pm] +# AUTHOR => [q[Sam Vilain ]] +# BUILD_REQUIRES => { } +# CONFIGURE_REQUIRES => { } +# NAME => q[Pod::Constants] +# PREREQ_PM => { Test::Simple=>q[0.18], Pod::Parser=>q[1.13] } +# TEST_REQUIRES => { } +# VERSION_FROM => q[Constants.pm] + +# --- MakeMaker post_initialize section: + + +# --- MakeMaker const_config section: + +# These definitions are from config.sh (via /usr/lib/x86_64-linux-gnu/perl/5.20/Config.pm). +# They may have been overridden via Makefile.PL or on the command line. +AR = ar +CC = cc +CCCDLFLAGS = -fPIC +CCDLFLAGS = -Wl,-E +DLEXT = so +DLSRC = dl_dlopen.xs +EXE_EXT = +FULL_AR = /usr/bin/ar +LD = cc +LDDLFLAGS = -shared -L/usr/local/lib -fstack-protector +LDFLAGS = -fstack-protector -L/usr/local/lib +LIBC = libc-2.19.so +LIB_EXT = .a +OBJ_EXT = .o +OSNAME = linux +OSVERS = 3.2.0-4-amd64 +RANLIB = : +SITELIBEXP = /usr/local/share/perl/5.20.1 +SITEARCHEXP = /usr/local/lib/x86_64-linux-gnu/perl/5.20.1 +SO = so +VENDORARCHEXP = /usr/lib/x86_64-linux-gnu/perl5/5.20 +VENDORLIBEXP = /usr/share/perl5 + + +# --- MakeMaker constants section: +AR_STATIC_ARGS = cr +DIRFILESEP = / +DFSEP = $(DIRFILESEP) +NAME = Pod::Constants +NAME_SYM = Pod_Constants +VERSION = 0.17 +VERSION_MACRO = VERSION +VERSION_SYM = 0_17 +DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" +XS_VERSION = 0.17 +XS_VERSION_MACRO = XS_VERSION +XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" +INST_ARCHLIB = blib/arch +INST_SCRIPT = blib/script +INST_BIN = blib/bin +INST_LIB = blib/lib +INST_MAN1DIR = blib/man1 +INST_MAN3DIR = blib/man3 +MAN1EXT = 1p +MAN3EXT = 3pm +INSTALLDIRS = site +DESTDIR = +PREFIX = /usr +PERLPREFIX = $(PREFIX) +SITEPREFIX = $(PREFIX)/local +VENDORPREFIX = $(PREFIX) +INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.20 +DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB) +INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.20.1 +DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB) +INSTALLVENDORLIB = $(VENDORPREFIX)/share/perl5 +DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB) +INSTALLARCHLIB = $(PERLPREFIX)/lib/x86_64-linux-gnu/perl/5.20 +DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB) +INSTALLSITEARCH = $(SITEPREFIX)/lib/x86_64-linux-gnu/perl/5.20.1 +DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH) +INSTALLVENDORARCH = $(VENDORPREFIX)/lib/x86_64-linux-gnu/perl5/5.20 +DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH) +INSTALLBIN = $(PERLPREFIX)/bin +DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN) +INSTALLSITEBIN = $(SITEPREFIX)/bin +DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN) +INSTALLVENDORBIN = $(VENDORPREFIX)/bin +DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN) +INSTALLSCRIPT = $(PERLPREFIX)/bin +DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT) +INSTALLSITESCRIPT = $(SITEPREFIX)/bin +DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT) +INSTALLVENDORSCRIPT = $(VENDORPREFIX)/bin +DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT) +INSTALLMAN1DIR = $(PERLPREFIX)/share/man/man1 +DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR) +INSTALLSITEMAN1DIR = $(SITEPREFIX)/man/man1 +DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR) +INSTALLVENDORMAN1DIR = $(VENDORPREFIX)/share/man/man1 +DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR) +INSTALLMAN3DIR = $(PERLPREFIX)/share/man/man3 +DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR) +INSTALLSITEMAN3DIR = $(SITEPREFIX)/man/man3 +DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR) +INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3 +DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR) +PERL_LIB = /usr/share/perl/5.20 +PERL_ARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.20 +LIBPERL_A = libperl.a +FIRST_MAKEFILE = Makefile +MAKEFILE_OLD = Makefile.old +MAKE_APERL_FILE = Makefile.aperl +PERLMAINCC = $(CC) +PERL_INC = /usr/lib/x86_64-linux-gnu/perl/5.20/CORE +PERL = /usr/bin/perl +FULLPERL = /usr/bin/perl +ABSPERL = $(PERL) +PERLRUN = $(PERL) +FULLPERLRUN = $(FULLPERL) +ABSPERLRUN = $(ABSPERL) +PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)" +PERL_CORE = 0 +PERM_DIR = 755 +PERM_RW = 644 +PERM_RWX = 755 + +MAKEMAKER = /usr/share/perl/5.20/ExtUtils/MakeMaker.pm +MM_VERSION = 6.98 +MM_REVISION = 69800 + +# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle). +# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle) +# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar) +# DLBASE = Basename part of dynamic library. May be just equal BASEEXT. +MAKE = make +FULLEXT = Pod/Constants +BASEEXT = Constants +PARENT_NAME = Pod +DLBASE = $(BASEEXT) +VERSION_FROM = Constants.pm +OBJECT = +LDFROM = $(OBJECT) +LINKTYPE = dynamic +BOOTDEP = + +# Handy lists of source code files: +XS_FILES = +C_FILES = +O_FILES = +H_FILES = +MAN1PODS = +MAN3PODS = Constants.pm + +# Where is the Config information that we are using/depend on +CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h + +# Where to build things +INST_LIBDIR = $(INST_LIB)/Pod +INST_ARCHLIBDIR = $(INST_ARCHLIB)/Pod + +INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT) +INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT) + +INST_STATIC = +INST_DYNAMIC = +INST_BOOT = + +# Extra linker info +EXPORT_LIST = +PERL_ARCHIVE = +PERL_ARCHIVE_AFTER = + + +TO_INST_PM = Constants.pm + +PM_TO_BLIB = Constants.pm \ + $(INST_LIB)/Pod/Constants.pm + + +# --- MakeMaker platform_constants section: +MM_Unix_VERSION = 6.98 +PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc + + +# --- MakeMaker tool_autosplit section: +# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto +AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$$$ARGV[0], $$$$ARGV[1], 0, 1, 1)' -- + + + +# --- MakeMaker tool_xsubpp section: + + +# --- MakeMaker tools_other section: +SHELL = /bin/sh +CHMOD = chmod +CP = cp +MV = mv +NOOP = $(TRUE) +NOECHO = @ +RM_F = rm -f +RM_RF = rm -rf +TEST_F = test -f +TOUCH = touch +UMASK_NULL = umask 0 +DEV_NULL = > /dev/null 2>&1 +MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' -- +EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' -- +FALSE = false +TRUE = true +ECHO = echo +ECHO_N = echo -n +UNINST = 0 +VERBINST = 0 +MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' -- +DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' -- +UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' -- +WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' -- +MACROSTART = +MACROEND = +USEMAKEFILE = -f +FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' -- +CP_NONEMPTY = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'cp_nonempty' -- + + +# --- MakeMaker makemakerdflt section: +makemakerdflt : all + $(NOECHO) $(NOOP) + + +# --- MakeMaker dist section: +TAR = tar +TARFLAGS = cvf +ZIP = zip +ZIPFLAGS = -r +COMPRESS = gzip --best +SUFFIX = .gz +SHAR = shar +PREOP = $(NOECHO) $(NOOP) +POSTOP = $(NOECHO) $(NOOP) +TO_UNIX = $(NOECHO) $(NOOP) +CI = ci -u +RCS_LABEL = rcs -Nv$(VERSION_SYM): -q +DIST_CP = best +DIST_DEFAULT = tardist +DISTNAME = Pod-Constants +DISTVNAME = Pod-Constants-0.17 + + +# --- MakeMaker macro section: + + +# --- MakeMaker depend section: + + +# --- MakeMaker cflags section: + + +# --- MakeMaker const_loadlibs section: + + +# --- MakeMaker const_cccmd section: + + +# --- MakeMaker post_constants section: + + +# --- MakeMaker pasthru section: + +PASTHRU = LIBPERL_A="$(LIBPERL_A)"\ + LINKTYPE="$(LINKTYPE)"\ + LD="$(LD)"\ + PREFIX="$(PREFIX)" + + +# --- MakeMaker special_targets section: +.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT) + +.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir + + + +# --- MakeMaker c_o section: + + +# --- MakeMaker xs_c section: + + +# --- MakeMaker xs_o section: + + +# --- MakeMaker top_targets section: +all :: pure_all manifypods + $(NOECHO) $(NOOP) + + +pure_all :: config pm_to_blib subdirs linkext + $(NOECHO) $(NOOP) + +subdirs :: $(MYEXTLIB) + $(NOECHO) $(NOOP) + +config :: $(FIRST_MAKEFILE) blibdirs + $(NOECHO) $(NOOP) + +help : + perldoc ExtUtils::MakeMaker + + +# --- MakeMaker blibdirs section: +blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists + $(NOECHO) $(NOOP) + +# Backwards compat with 6.18 through 6.25 +blibdirs.ts : blibdirs + $(NOECHO) $(NOOP) + +$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_LIBDIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR) + $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists + +$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHLIB) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB) + $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists + +$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_AUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR) + $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists + +$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR) + $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists + +$(INST_BIN)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_BIN) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN) + $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists + +$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_SCRIPT) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT) + $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists + +$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN1DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR) + $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists + +$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL + $(NOECHO) $(MKPATH) $(INST_MAN3DIR) + $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR) + $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists + + + +# --- MakeMaker linkext section: + +linkext :: $(LINKTYPE) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dlsyms section: + + +# --- MakeMaker dynamic_bs section: + +BOOTSTRAP = + + +# --- MakeMaker dynamic section: + +dynamic :: $(FIRST_MAKEFILE) $(BOOTSTRAP) $(INST_DYNAMIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker dynamic_lib section: + + +# --- MakeMaker static section: + +## $(INST_PM) has been moved to the all: target. +## It remains here for awhile to allow for old usage: "make static" +static :: $(FIRST_MAKEFILE) $(INST_STATIC) + $(NOECHO) $(NOOP) + + +# --- MakeMaker static_lib section: + + +# --- MakeMaker manifypods section: + +POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--" +POD2MAN = $(POD2MAN_EXE) + + +manifypods : pure_all \ + Constants.pm + $(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) \ + Constants.pm $(INST_MAN3DIR)/Pod::Constants.$(MAN3EXT) + + + + +# --- MakeMaker processPL section: + + +# --- MakeMaker installbin section: + + +# --- MakeMaker subdirs section: + +# none + +# --- MakeMaker clean_subdirs section: +clean_subdirs : + $(NOECHO) $(NOOP) + + +# --- MakeMaker clean section: + +# Delete temporary files but do not touch installed files. We don't delete +# the Makefile here so a later make realclean still has a makefile to use. + +clean :: clean_subdirs + - $(RM_F) \ + $(BASEEXT).bso $(BASEEXT).def \ + $(BASEEXT).exp $(BASEEXT).x \ + $(BOOTSTRAP) $(INST_ARCHAUTODIR)/extralibs.all \ + $(INST_ARCHAUTODIR)/extralibs.ld $(MAKE_APERL_FILE) \ + *$(LIB_EXT) *$(OBJ_EXT) \ + *perl.core MYMETA.json \ + MYMETA.yml blibdirs.ts \ + core core.*perl.*.? \ + core.[0-9] core.[0-9][0-9] \ + core.[0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9] \ + core.[0-9][0-9][0-9][0-9][0-9] lib$(BASEEXT).def \ + mon.out perl \ + perl$(EXE_EXT) perl.exe \ + perlmain.c pm_to_blib \ + pm_to_blib.ts so_locations \ + tmon.out + - $(RM_RF) \ + blib + $(NOECHO) $(RM_F) $(MAKEFILE_OLD) + - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL) + + +# --- MakeMaker realclean_subdirs section: +realclean_subdirs : + $(NOECHO) $(NOOP) + + +# --- MakeMaker realclean section: +# Delete temporary files (via clean) and also delete dist files +realclean purge :: clean realclean_subdirs + - $(RM_F) \ + $(FIRST_MAKEFILE) $(MAKEFILE_OLD) + - $(RM_RF) \ + $(DISTVNAME) + + +# --- MakeMaker metafile section: +metafile : create_distdir + $(NOECHO) $(ECHO) Generating META.yml + $(NOECHO) $(ECHO) '---' > META_new.yml + $(NOECHO) $(ECHO) 'abstract: '\''Include constants from POD'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'author:' >> META_new.yml + $(NOECHO) $(ECHO) ' - '\''Sam Vilain '\''' >> META_new.yml + $(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: '\''0'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'dynamic_config: 1' >> META_new.yml + $(NOECHO) $(ECHO) 'generated_by: '\''ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'license: unknown' >> META_new.yml + $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml + $(NOECHO) $(ECHO) ' url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml + $(NOECHO) $(ECHO) ' version: '\''1.4'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'name: Pod-Constants' >> META_new.yml + $(NOECHO) $(ECHO) 'no_index:' >> META_new.yml + $(NOECHO) $(ECHO) ' directory:' >> META_new.yml + $(NOECHO) $(ECHO) ' - t' >> META_new.yml + $(NOECHO) $(ECHO) ' - inc' >> META_new.yml + $(NOECHO) $(ECHO) 'requires:' >> META_new.yml + $(NOECHO) $(ECHO) ' Pod::Parser: '\''1.13'\''' >> META_new.yml + $(NOECHO) $(ECHO) ' Test::Simple: '\''0.18'\''' >> META_new.yml + $(NOECHO) $(ECHO) 'version: 0.17' >> META_new.yml + -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml + $(NOECHO) $(ECHO) Generating META.json + $(NOECHO) $(ECHO) '{' > META_new.json + $(NOECHO) $(ECHO) ' "abstract" : "Include constants from POD",' >> META_new.json + $(NOECHO) $(ECHO) ' "author" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "Sam Vilain "' >> META_new.json + $(NOECHO) $(ECHO) ' ],' >> META_new.json + $(NOECHO) $(ECHO) ' "dynamic_config" : 1,' >> META_new.json + $(NOECHO) $(ECHO) ' "generated_by" : "ExtUtils::MakeMaker version 6.98, CPAN::Meta::Converter version 2.142690",' >> META_new.json + $(NOECHO) $(ECHO) ' "license" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "unknown"' >> META_new.json + $(NOECHO) $(ECHO) ' ],' >> META_new.json + $(NOECHO) $(ECHO) ' "meta-spec" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",' >> META_new.json + $(NOECHO) $(ECHO) ' "version" : "2"' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "name" : "Pod-Constants",' >> META_new.json + $(NOECHO) $(ECHO) ' "no_index" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "directory" : [' >> META_new.json + $(NOECHO) $(ECHO) ' "t",' >> META_new.json + $(NOECHO) $(ECHO) ' "inc"' >> META_new.json + $(NOECHO) $(ECHO) ' ]' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "prereqs" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "build" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "configure" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "ExtUtils::MakeMaker" : "0"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "runtime" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "requires" : {' >> META_new.json + $(NOECHO) $(ECHO) ' "Pod::Parser" : "1.13",' >> META_new.json + $(NOECHO) $(ECHO) ' "Test::Simple" : "0.18"' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' }' >> META_new.json + $(NOECHO) $(ECHO) ' },' >> META_new.json + $(NOECHO) $(ECHO) ' "release_status" : "stable",' >> META_new.json + $(NOECHO) $(ECHO) ' "version" : 0.17' >> META_new.json + $(NOECHO) $(ECHO) '}' >> META_new.json + -$(NOECHO) $(MV) META_new.json $(DISTVNAME)/META.json + + +# --- MakeMaker signature section: +signature : + cpansign -s + + +# --- MakeMaker dist_basics section: +distclean :: realclean distcheck + $(NOECHO) $(NOOP) + +distcheck : + $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck + +skipcheck : + $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck + +manifest : + $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest + +veryclean : realclean + $(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old + + + +# --- MakeMaker dist_core section: + +dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE) + $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \ + -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' -- + +tardist : $(DISTVNAME).tar$(SUFFIX) + $(NOECHO) $(NOOP) + +uutardist : $(DISTVNAME).tar$(SUFFIX) + uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)_uu' + +$(DISTVNAME).tar$(SUFFIX) : distdir + $(PREOP) + $(TO_UNIX) + $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME) + $(RM_RF) $(DISTVNAME) + $(COMPRESS) $(DISTVNAME).tar + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)' + $(POSTOP) + +zipdist : $(DISTVNAME).zip + $(NOECHO) $(NOOP) + +$(DISTVNAME).zip : distdir + $(PREOP) + $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME) + $(RM_RF) $(DISTVNAME) + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).zip' + $(POSTOP) + +shdist : distdir + $(PREOP) + $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar + $(RM_RF) $(DISTVNAME) + $(NOECHO) $(ECHO) 'Created $(DISTVNAME).shar' + $(POSTOP) + + +# --- MakeMaker distdir section: +create_distdir : + $(RM_RF) $(DISTVNAME) + $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \ + -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');" + +distdir : create_distdir distmeta + $(NOECHO) $(NOOP) + + + +# --- MakeMaker dist_test section: +disttest : distdir + cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL + cd $(DISTVNAME) && $(MAKE) $(PASTHRU) + cd $(DISTVNAME) && $(MAKE) test $(PASTHRU) + + + +# --- MakeMaker dist_ci section: + +ci : + $(PERLRUN) "-MExtUtils::Manifest=maniread" \ + -e "@all = keys %{ maniread() };" \ + -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \ + -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});" + + +# --- MakeMaker distmeta section: +distmeta : create_distdir metafile + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \ + -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \ + -e ' or print "Could not add META.yml to MANIFEST: $$$${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -f q{META.json};' \ + -e 'eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) }' \ + -e ' or print "Could not add META.json to MANIFEST: $$$${'\''@'\''}\n"' -- + + + +# --- MakeMaker distsignature section: +distsignature : create_distdir + $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) }' \ + -e ' or print "Could not add SIGNATURE to MANIFEST: $$$${'\''@'\''}\n"' -- + $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE + cd $(DISTVNAME) && cpansign -s + + + +# --- MakeMaker install section: + +install :: pure_install doc_install + $(NOECHO) $(NOOP) + +install_perl :: pure_perl_install doc_perl_install + $(NOECHO) $(NOOP) + +install_site :: pure_site_install doc_site_install + $(NOECHO) $(NOOP) + +install_vendor :: pure_vendor_install doc_vendor_install + $(NOECHO) $(NOOP) + +pure_install :: pure_$(INSTALLDIRS)_install + $(NOECHO) $(NOOP) + +doc_install :: doc_$(INSTALLDIRS)_install + $(NOECHO) $(NOOP) + +pure__install : pure_site_install + $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site + +doc__install : doc_site_install + $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site + +pure_perl_install :: all + $(NOECHO) umask 022; $(MOD_INSTALL) \ + $(INST_LIB) $(DESTINSTALLPRIVLIB) \ + $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \ + $(INST_BIN) $(DESTINSTALLBIN) \ + $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \ + $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \ + $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR) + $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ + $(SITEARCHEXP)/auto/$(FULLEXT) + + +pure_site_install :: all + $(NOECHO) umask 02; $(MOD_INSTALL) \ + read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \ + write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \ + $(INST_LIB) $(DESTINSTALLSITELIB) \ + $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \ + $(INST_BIN) $(DESTINSTALLSITEBIN) \ + $(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \ + $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \ + $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) + $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ + $(PERL_ARCHLIB)/auto/$(FULLEXT) + +pure_vendor_install :: all + $(NOECHO) umask 022; $(MOD_INSTALL) \ + $(INST_LIB) $(DESTINSTALLVENDORLIB) \ + $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ + $(INST_BIN) $(DESTINSTALLVENDORBIN) \ + $(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \ + $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ + $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR) + + +doc_perl_install :: all + +doc_site_install :: all + $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod + -$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH) + -$(NOECHO) umask 02; $(DOC_INSTALL) \ + "Module" "$(NAME)" \ + "installed into" "$(INSTALLSITELIB)" \ + LINKTYPE "$(LINKTYPE)" \ + VERSION "$(VERSION)" \ + EXE_FILES "$(EXE_FILES)" \ + >> $(DESTINSTALLSITEARCH)/perllocal.pod + +doc_vendor_install :: all + + +uninstall :: uninstall_from_$(INSTALLDIRS)dirs + $(NOECHO) $(NOOP) + +uninstall_from_perldirs :: + +uninstall_from_sitedirs :: + $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist + +uninstall_from_vendordirs :: + + + +# --- MakeMaker force section: +# Phony target to force checking subdirectories. +FORCE : + $(NOECHO) $(NOOP) + + +# --- MakeMaker perldepend section: + + +# --- MakeMaker makefile section: +# We take a very conservative approach here, but it's worth it. +# We move Makefile to Makefile.old here to avoid gnu make looping. +$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) + $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?" + $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..." + -$(NOECHO) $(RM_F) $(MAKEFILE_OLD) + -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) + - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL) + $(PERLRUN) Makefile.PL + $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <==" + $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <==" + $(FALSE) + + + +# --- MakeMaker staticmake section: + +# --- MakeMaker makeaperl section --- +MAP_TARGET = perl +FULLPERL = /usr/bin/perl + +$(MAP_TARGET) :: static $(MAKE_APERL_FILE) + $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@ + +$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib + $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET) + $(NOECHO) $(PERLRUNINST) \ + Makefile.PL DIR= \ + MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \ + MAKEAPERL=1 NORECURS=1 CCCDLFLAGS= + + +# --- MakeMaker test section: + +TEST_VERBOSE=0 +TEST_TYPE=test_$(LINKTYPE) +TEST_FILE = test.pl +TEST_FILES = t/*.t +TESTDB_SW = -d + +testdb :: testdb_$(LINKTYPE) + +test :: $(TEST_TYPE) subdirs-test + +subdirs-test :: + $(NOECHO) $(NOOP) + + +test_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES) + +testdb_dynamic :: pure_all + PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) + +test_ : test_dynamic + +test_static :: test_dynamic +testdb_static :: testdb_dynamic + + +# --- MakeMaker ppd section: +# Creates a PPD (Perl Package Description) for a binary distribution. +ppd : + $(NOECHO) $(ECHO) '' > $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' Include constants from POD' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' Sam Vilain <sam@vilain.net>' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) '' >> $(DISTNAME).ppd + + +# --- MakeMaker pm_to_blib section: + +pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM) + $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \ + Constants.pm $(INST_LIB)/Pod/Constants.pm + $(NOECHO) $(TOUCH) pm_to_blib + + +# --- MakeMaker selfdocument section: + + +# --- MakeMaker postamble section: + + +# End. diff --git a/Makefile.PL b/Makefile.PL new file mode 100644 index 0000000..d9ab6a0 --- /dev/null +++ b/Makefile.PL @@ -0,0 +1,11 @@ +use ExtUtils::MakeMaker; + +WriteMakefile( + 'NAME' => 'Pod::Constants', + 'VERSION_FROM' => "Constants.pm", + 'PREREQ_PM' => { Pod::Parser => 1.13, + Test::Simple => 0.18, + }, + ABSTRACT_FROM => 'Constants.pm', + AUTHOR => 'Sam Vilain ', +); diff --git a/README b/README new file mode 100644 index 0000000..c1680e4 --- /dev/null +++ b/README @@ -0,0 +1,33 @@ +Pod::Constants version 0.16 +=========================== + +Pod::Constants allows you to extract data from your POD at run-time, +meaning you can do things like declare constants in POD and not have +to update two places at once every time you make a change. + +This version adds the ability to read structured data from POD +sections, as well as insert arbitrary hooks into the extraction of +data. + +INSTALLATION + +To install this module type the following: + + perl Makefile.PL + make + make test + make install + +DEPENDENCIES + +Pod::Parser, 1.13 or better. That is to say, I haven't tested it on +any earlier version. + +Running the test suite requires Test::Simple 0.18. + +COPYRIGHT AND LICENCE + +Copyright (C) 2001, 2002, 2007 Sam Vilain. All Rights Reserved. +This module is free software. It may be used, redistributed and/or +modified under the terms of the Perl Artistic License, version 2 or +later, OR the terms of the GNU General Public License, v3 or later. diff --git a/SIGNATURE b/SIGNATURE new file mode 100644 index 0000000..25579bc --- /dev/null +++ b/SIGNATURE @@ -0,0 +1,39 @@ +This file contains message digests of all files listed in MANIFEST, +signed via the Module::Signature module, version 0.73. + +To verify the content in this distribution, first make sure you have +Module::Signature installed, then type: + + % cpansign -v + +It will check each file's integrity, as well as the signature's +validity. If "==> Signature verified OK! <==" is not displayed, +the distribution may already have been compromised, and you should +not run its Makefile.PL or Build.PL. + +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA512 + +SHA1 462ba3a97544419ef19a0ea770300ed111eeeba3 Changes +SHA1 69c4899914bdef7e92ad568aa01883ba1ab2bf58 Constants.pm +SHA1 8fe42bbbf49d63ca2c0f03092e70220385fb897d MANIFEST +SHA1 46f261f87b59a79434df649883373911429e5ced MYMETA.json +SHA1 254d2755ec3959e54e0bce688baafaa6dabcf8d8 MYMETA.yml +SHA1 696ff0eab7cae5fea0e33f902a961e0891307367 Makefile +SHA1 e5ee3c348310734ef4e800795869396a90237ac7 Makefile.PL +SHA1 3299bac2292bb848bee61e7fed224c13e2d15240 README +SHA1 bfbb159569bad05ca423c73a626624212b9e2f0e t/01-constants.t +SHA1 a1795e821b9607c33d6bb9c617d6f3121504550b t/Cheese.pm +SHA1 4abb4ccd5bf0f555e66d6252e245338935f28c74 t/ReEntrancyTest.pm +SHA1 cb75bb83def475000d3fb72f702a36b5669f7632 t/cheese.pl +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQEcBAEBCgAGBQJU/yW5AAoJEBdtaL3wGtIoUhYH/iuVKM/8qfwFN1liNQk5GJvJ +Zwd6J8rPVjQRr8EPITMHc1iOWyC3znwcCNrwpkdEcGgJOROVzUWJGUZurlAHoPhU +1Q1gVnjQzJasON5aucZjDHQ4g4i/96qbumSgrOoFQw9dqMlOMM3z37oqphfR8Tt5 +ZKYJb47pE/jU8Z8QTBOjJPgw2CNRumzcfNRW+pKTeA/R6ivLXtiOKLgbbyIC4Vqn +liALcIb9IJhmMaKh4+IOVu+5bvjvgtb2Uv+nTYfptBnuaeeglRW6JhDUXDXtyzLG +2ByImhDcMBOVNu/RsePwW6Gcl7asWLueRQ+8twwMxSIHtPW65NpLxw/uX7imiPI= +=jmeQ +-----END PGP SIGNATURE----- diff --git a/t/01-constants.t b/t/01-constants.t new file mode 100644 index 0000000..dfe8cf6 --- /dev/null +++ b/t/01-constants.t @@ -0,0 +1,135 @@ +#!/usr/bin/perl -w + +use strict; +use Test::More tests => 20; +use Data::Dumper; + +use vars qw($section_1 $section_2 $section_3 $section_4 %options); + +use_ok( + "Pod::Constants", + section_1 => \$section_1, + -trim => 1, + section_2 => \$section_2, + section_3 => sub { tr/[a-z]/[A-Z]/; $section_3 = $_ }, + section_4 => sub { eval }, + 'command line parameters' => sub { + &Pod::Constants::add_hook + ( + #-trim => 0, + '*item' => sub { + my ($options, $description) = + m/^(.*?)\n\n(.*)/s; + my (@options, $longest); + $longest = ""; + for my $option + ($options =~ m/\G((?:-\w|--\w+))(?:,\s*)?/g) { + push @options, $option; + if ( length $option > length $longest) { + $longest = $option; + } + } + $longest =~ s/^-*//; + $options{$longest} = + { + options => \@options, + description => $description, + }; + } + ) + }, + ); + +# try as hard as we can to get the path to perl +ok($Pod::Constants::VERSION, + "Pod::Constants sets its own VERSION"); + +BEGIN { + push @INC, "t"; +}; +# to avoid a warning +if ( 0 ) { $Cheese::foo = $ReEntrancyTest::wohoo = $Cheese::quux; } +eval "use Cheese"; + +is($section_1, "Down with Pants!\n\n", "no trim from main"); +is($section_2, "42", "with trim from main"); +is($section_3, "CLANK_EST", "sub"); +is($section_4, "touche", "eval"); +is($Cheese::foo, "detcepxe", "From module"); +is($ReEntrancyTest::wohoo, "Re-entrancy works!", "From module"); +is($Cheese::quux, "Blah.", "From module(2)"); +like(`$^X -c t/Cheese.pm 2>&1`, qr/syntax OK/, "perl -c module"); +like(`$^X -c t/cheese.pl 2>&1`, qr/syntax OK/, "perl -c script"); + +# test the examples on the man page :) +package Pod::Constants; +Pod::Constants->import (SYNOPSIS => sub { + $main::section_1 = join "\n", map { s/^ //; $_ } split /\n/, $_ +}); + +package main; +open NEWPKG, ">t/TestManPage.pm" or die $!; +# why define your test results when you can read them in from POD? +$section_1 =~ s/myhash\)/myhash %myhash2)/; +$section_1 =~ s/myhash;/myhash, "%myhash\'s value after the above:" => sub { %myhash2 = eval };/; +print NEWPKG "package TestManPage;\n$section_1\n2.818;\n"; +close NEWPKG; + +use_ok("TestManPage"); + +is($TestManPage::myvar, 'This string will be loaded into $myvar', + "man page example 1"); +is($TestManPage::VERSION, $Pod::Constants::VERSION, + "man page example 2"); +ok($TestManPage::VERSION, + "man page example 2 cross-check"); +is($TestManPage::myarray[2], 'For example, this is $myarray[2].', + "man page example 3"); +my $ok = 0; +while (my ($k, $v) = each %TestManPage::myhash) { + if (exists $TestManPage::myhash2{$k}) { $ok ++ }; + if ($v eq $TestManPage::myhash2{$k}) { $ok ++ }; +} +is($ok, 4, + "man page example 4"); +is(scalar keys %TestManPage::myhash, 2, + "man page example 4 cross-check"); +is($TestManPage::html, '

This text will be in $html

', + "man page example 5"); +# supress warnings +$TestManPage::myvar = $TestManPage::html = undef; +@TestManPage::myarray = (); + +is($options{foo}->{options}->[0], "-f", "Pod::Constants::add_hook"); + +=head2 section_1 + +Down with Pants! + +=head2 section_2 + +42 + +=head2 section_3 + +clank_est + +=head2 section_4 + +$section_4 = "touche" + +=cut + +=head1 command line parameters + +the following command line parameters are supported + +=item -f, --foo + +This does something cool. + +=item -h, --help + +This also does something pretty cool. + +=cut diff --git a/t/Cheese.pm b/t/Cheese.pm new file mode 100644 index 0000000..db18104 --- /dev/null +++ b/t/Cheese.pm @@ -0,0 +1,25 @@ +package Cheese; + +use strict; + +use vars qw($foo $quux); +use Pod::Constants -debug => 1, -trim => 1, + foo => \$foo, + bar => sub { print "GOT HERE\n"; eval "use ReEntrancyTest"; + print "GOT HERE TOO. \$\@ is `$@'\n"; }, + quux => \$quux, +; + +=head1 foo + +detcepxe + +=head1 bar + +=head2 quux + +Blah. + +=cut + +1; diff --git a/t/ReEntrancyTest.pm b/t/ReEntrancyTest.pm new file mode 100644 index 0000000..e6fc08b --- /dev/null +++ b/t/ReEntrancyTest.pm @@ -0,0 +1,15 @@ + +package ReEntrancyTest; + +use strict; +use vars qw($wohoo $foo); + +use Pod::Constants -debug => 1, -trim => 1, foobar => \$wohoo; + +=head1 foobar + +Re-entrancy works! + +=cut + +1; diff --git a/t/cheese.pl b/t/cheese.pl new file mode 100644 index 0000000..11393f4 --- /dev/null +++ b/t/cheese.pl @@ -0,0 +1,13 @@ + +use strict; + +use vars qw($foo); +use Pod::Constants -trim => 1, foo => \$foo; + +=head1 foo + +detcepxe + +=cut + +1;