16fb12b70Safresh1#!perl -w 26fb12b70Safresh1package version; 36fb12b70Safresh1 46fb12b70Safresh1use 5.006002; 56fb12b70Safresh1use strict; 6b8851fccSafresh1use warnings::register; 7b8851fccSafresh1if ($] >= 5.015) { 8b8851fccSafresh1 warnings::register_categories(qw/version/); 9b8851fccSafresh1} 106fb12b70Safresh1 11*3d61058aSafresh1our $VERSION = '0.9930'; 129f11ffb7Safresh1our $CLASS = 'version'; 139f11ffb7Safresh1our (@ISA, $STRICT, $LAX); 146fb12b70Safresh1 156fb12b70Safresh1# avoid using Exporter 166fb12b70Safresh1require version::regex; 176fb12b70Safresh1*version::is_lax = \&version::regex::is_lax; 186fb12b70Safresh1*version::is_strict = \&version::regex::is_strict; 196fb12b70Safresh1*LAX = \$version::regex::LAX; 209f11ffb7Safresh1*LAX_DECIMAL_VERSION = \$version::regex::LAX_DECIMAL_VERSION; 219f11ffb7Safresh1*LAX_DOTTED_DECIMAL_VERSION = \$version::regex::LAX_DOTTED_DECIMAL_VERSION; 226fb12b70Safresh1*STRICT = \$version::regex::STRICT; 239f11ffb7Safresh1*STRICT_DECIMAL_VERSION = \$version::regex::STRICT_DECIMAL_VERSION; 249f11ffb7Safresh1*STRICT_DOTTED_DECIMAL_VERSION = \$version::regex::STRICT_DOTTED_DECIMAL_VERSION; 256fb12b70Safresh1 266fb12b70Safresh1sub import { 276fb12b70Safresh1 no strict 'refs'; 286fb12b70Safresh1 my ($class) = shift; 296fb12b70Safresh1 306fb12b70Safresh1 # Set up any derived class 316fb12b70Safresh1 unless ($class eq $CLASS) { 326fb12b70Safresh1 local $^W; 336fb12b70Safresh1 *{$class.'::declare'} = \&{$CLASS.'::declare'}; 346fb12b70Safresh1 *{$class.'::qv'} = \&{$CLASS.'::qv'}; 356fb12b70Safresh1 } 366fb12b70Safresh1 376fb12b70Safresh1 my %args; 386fb12b70Safresh1 if (@_) { # any remaining terms are arguments 396fb12b70Safresh1 map { $args{$_} = 1 } @_ 406fb12b70Safresh1 } 416fb12b70Safresh1 else { # no parameters at all on use line 426fb12b70Safresh1 %args = 436fb12b70Safresh1 ( 446fb12b70Safresh1 qv => 1, 456fb12b70Safresh1 'UNIVERSAL::VERSION' => 1, 466fb12b70Safresh1 ); 476fb12b70Safresh1 } 486fb12b70Safresh1 496fb12b70Safresh1 my $callpkg = caller(); 506fb12b70Safresh1 516fb12b70Safresh1 if (exists($args{declare})) { 526fb12b70Safresh1 *{$callpkg.'::declare'} = 536fb12b70Safresh1 sub {return $class->declare(shift) } 546fb12b70Safresh1 unless defined(&{$callpkg.'::declare'}); 556fb12b70Safresh1 } 566fb12b70Safresh1 576fb12b70Safresh1 if (exists($args{qv})) { 586fb12b70Safresh1 *{$callpkg.'::qv'} = 596fb12b70Safresh1 sub {return $class->qv(shift) } 606fb12b70Safresh1 unless defined(&{$callpkg.'::qv'}); 616fb12b70Safresh1 } 626fb12b70Safresh1 636fb12b70Safresh1 if (exists($args{'UNIVERSAL::VERSION'})) { 646fb12b70Safresh1 local $^W; 656fb12b70Safresh1 *UNIVERSAL::VERSION 666fb12b70Safresh1 = \&{$CLASS.'::_VERSION'}; 676fb12b70Safresh1 } 686fb12b70Safresh1 696fb12b70Safresh1 if (exists($args{'VERSION'})) { 706fb12b70Safresh1 *{$callpkg.'::VERSION'} = \&{$CLASS.'::_VERSION'}; 716fb12b70Safresh1 } 726fb12b70Safresh1 736fb12b70Safresh1 if (exists($args{'is_strict'})) { 746fb12b70Safresh1 *{$callpkg.'::is_strict'} = \&{$CLASS.'::is_strict'} 756fb12b70Safresh1 unless defined(&{$callpkg.'::is_strict'}); 766fb12b70Safresh1 } 776fb12b70Safresh1 786fb12b70Safresh1 if (exists($args{'is_lax'})) { 796fb12b70Safresh1 *{$callpkg.'::is_lax'} = \&{$CLASS.'::is_lax'} 806fb12b70Safresh1 unless defined(&{$callpkg.'::is_lax'}); 816fb12b70Safresh1 } 826fb12b70Safresh1} 836fb12b70Safresh1 846fb12b70Safresh1 856fb12b70Safresh11; 86