Devel-EdTrace
view release on metacpan or search on metacpan
# -*- 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 )