Devel-EdTrace

 view release on metacpan or  search on metacpan

EdTrace.pm  view on Meta::CPAN

# -*- perl -*-

package Devel::EdTrace;
no warnings;
use strict;
use Data::Diff;
use Data::Grep;
use Data::Dumper;
use Data::DeepCopy;
use Config;

use vars qw($_brackets $_simple_parens);

my $_quotables = [ '@', '#', '%', '^', '&', '*', ':', '"', "'", '', '', '' ];

BEGIN 
{ 
	eval "use PadWalker qw(peek_my peek_our);\n";
	eval "use Devel::LexAlias qw(lexalias);\n";
	($_brackets , $_simple_parens) = ___brackets_parens();
#	eval "use Regex::Token qw(\$_brackets \$_simple_parens);\n";

#	if ($@) { print STDERR "HERE :$@:\n"; }
#
#	print STDERR "HERE: $_brackets\n";
#	die;
	if (!defined(&peek_my)) { print STDERR "SYSTEM WARNING: PadWalker not found!\n"; }
	if (!defined(&lexalias)) { print STDERR "SYSTEM WARNING: Devel::LexAlias not found!\n"; }

#	print STDERR ":$_simple_parens:\n";
	*lexalias = sub { {} } if (!defined(&lexalias));
	*peek_my = sub { {} } if (!defined(&peek_my));
	*peek_our = sub { {} } if (!defined(&peek_our));

    sub ___brackets_parens
    {
		my $_cpp_comment  = q$(?<![A-Za-z:])//[^\n]*(?=\n|\Z)$;
        my $_perl_comment = q,(?>\#[^\n]+(?:\n|\Z)),;
		my $_doublestring = q$(?>\"(?>[^\\\"]+|\\\.)*\")$; #"
		my $_singlestring = q$(?>\'(?>[^\\\']+|\\\.)*\')$; #'
		my $_simple_brackets;

		my $_simple_parens;

        my $_sub_simple_brackets = "\{(?>[^{}]+)\}";
        my $_sub_simple_parens = "(?>\\((?>[^()]+)\\))";

		my $_subbrackets =
					q$
						\{
							(?>
					$ . 
								$_perl_comment . '|' . 
								$_cpp_comment  . '|' .
								$_doublestring . '|' .
								$_singlestring .  '|' . 
					q$

								(?>[""''/\#])      |
								(?>[^{}""''/\#]+)
							)*
						\}
					$;  

        my $xx;
	    for ($xx = 0; $xx < 20; $xx++)
        {

		    $_simple_brackets = "(?>\\s*\{(?>[^{}]+|$_sub_simple_brackets)*\})";
		    $_sub_simple_brackets = $_simple_brackets;
					
		    $_brackets = 
					q$
						(?>\s*
							\{ 
								(?>
					$ . 			$_cpp_comment . '|' .
									$_doublestring .'|'.
									$_singlestring . '|' .
                                    $_perl_comment . '|' .
					q$
									(?>[""''/\#]) |
									(?>[^{}""''/\#]+) |
					$ .
									$_subbrackets .
					q$
								)*



( run in 1.712 second using v1.01-cache-2.11-cpan-800906f7e73 )