File: Regexp.pm

package info (click to toggle)
libdata-printer-perl 1.000001-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 692 kB
  • sloc: perl: 4,208; makefile: 7
file content (32 lines) | stat: -rw-r--r-- 960 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package Data::Printer::Filter::Regexp;
use strict;
use warnings;
use Data::Printer::Filter;
use Data::Printer::Common;

filter 'Regexp' => sub {
    my ($regexp, $ddp) = @_;
    my $val = "$regexp";
    my $string;

    # a regex to parse a regex. Talk about full circle :)
    # note: we are not validating anything, just grabbing modifiers
    if ($val =~ m/\(\?\^?([uladxismnpogce]*)(?:\-[uladxismnpogce]+)?:(.*)\)/s) {
        my ($modifiers, $parsed_val) = ($1, $2);
        $string = $ddp->maybe_colorize($parsed_val, 'regex');
        if ($modifiers) {
            $string .= "  (modifiers: $modifiers)";
        }
    }
    else {
        Data::Printer::Common::_warn($ddp, "Unrecognized regex $val. Please submit a bug report for Data::Printer.");
        $string = $ddp->maybe_colorize('Unknown Regexp', 'regex');
    }

    if ($ddp->show_tied and my $tie = ref tied $regexp) {
        $string .= " (tied to $tie)";
    }
    return $string;
};

1;