File Coverage

lib/Devel/ebug/Backend/Plugin/SymbolBrowser.pm
Criterion Covered Total %
statement 3 22 13.6
branch n/a
condition n/a
subroutine 1 5 20.0
pod 0 4 0.0
total 4 31 12.9


line stmt bran cond sub pod time code
1             package Devel::ebug::Backend::Plugin::SymbolBrowser;
2              
3 1     1   2671 use strict;
  1         2  
  1         402  
4              
5             sub register_commands {
6 0     0 0   return ( package_list => { sub => \&package_list },
7             symbol_list => { sub => \&symbol_list },
8             subroutine_info => { sub => \&subroutine_info },
9             );
10             }
11              
12             sub package_list {
13 0     0 0   my( $req, $context ) = @_;
14 0           my $package = $req->{package};
15              
16 0           require Devel::Symdump;
17 0           my @packages = sort Devel::Symdump->packages( $package );
18              
19 0           return { packages => \@packages, package => $package };
20             }
21              
22             my %types =
23             ( '&' => 'functions',
24             '$' => 'scalars',
25             '@' => 'arrays',
26             '%' => 'hashes',
27             );
28              
29             sub symbol_list {
30 0     0 0   my( $req, $context ) = @_;
31 0           my $package = $req->{package};
32 0           my $types = $req->{types};
33              
34 0           require Devel::Symdump;
35 0           my @symbols = map { my $method = $types{$_};
  0            
36 0           sort Devel::Symdump->$method( $package )
37             } @$types;
38              
39 0           return { symbols => \@symbols, package => $package };
40             }
41              
42             sub subroutine_info {
43 0     0 0   my( $req, $context ) = @_;
44 0           my $subroutine = $req->{subroutine};
45 0           $subroutine =~ s/^main::(?=\w+::)//;
46 0           my( $filename, $start, $end ) =
47             $DB::sub{$subroutine} =~ m/^(.+):(\d+)-(\d+)$/;
48              
49 0           return { filename => $filename, start => $start, end => $end };
50             }
51              
52             1;