File Coverage: lib/Code/Statistics/Metric/sdepth.pm

# File Coverage

File: | lib/Code/Statistics/Metric/sdepth.pm
Coverage: | 100.0%

line | stmt | bran | cond | sub | pod | time | code
--- | --- | --- | --- | --- | --- | --- | ---
1 | 2 2 2 |  |  | 2 |  | 0 0 0 | use strict;
2 | 2 2 2 |  |  | 2 |  | 0 0 0 | use warnings;
3 |
4 |  |  |  |  |  |  | package Code::Statistics::Metric::sdepth;
5 |
6 |  |  |  |  |  |  | # ABSTRACT: measures the scope depth of a target
7 |
8 | 2 2 2 |  |  | 2 |  | 0 0 0 | use Moose;
9 |  |  |  |  |  |  | extends 'Code::Statistics::Metric';
10 |
11 - 13 |  |
    =head2 measure
        Returns the scope depth of the given target.
    =cut
14 |
15 |  |  |  |  |  |  | sub measure {
16 |  |  |  |  |  |  | my ( $class, $target ) = @_;
17 |
18 |  |  |  |  |  |  | my @parent_list = $class->_get_parents( $target );
19 |
20 |  |  |  |  |  |  | my $depth = @parent_list - 1;
21 |
22 |  |  |  |  |  |  | return $depth;
23 |  |  |  |  |  |  | }
24 |
25 |  |  |  |  |  |  | sub _get_parents {
26 |  |  |  |  |  |  | my ( $class, $target ) = @_;
27 |  |  |  |  |  |  | my $parent = $target->parent;
28 |  |  |  |  |  |  | return $target if !$parent;
29 |  |  |  |  |  |  | return ( $target, $class->_get_parents( $parent ) );
30 |  |  |  |  |  |  | }
31 |
32 |  |  |  |  |  |  | 1;