File Coverage

lib/OODoc/Object.pm
Criterion Covered Total %
statement 12 53 22.6
branch 0 12 0.0
condition 0 8 0.0
subroutine 4 15 26.6
pod 10 11 90.9
total 26 99 26.2


line stmt bran cond sub pod time code
1             # Copyrights 2003-2015 by [Mark Overmeer].
2             # For other contributors see ChangeLog.
3             # See the manual pages for details on the licensing terms.
4             # Pod stripped from pm file by OODoc 2.01.
5              
6             package OODoc::Object;
7 2     2   11 use vars '$VERSION';
  2         4  
  2         82  
8             $VERSION = '2.01';
9              
10              
11 2     2   9 use strict;
  2         3  
  2         40  
12 2     2   9 use warnings;
  2         3  
  2         57  
13              
14 2     2   1531 use Log::Report 'oodoc';
  2         220226  
  2         16  
15              
16              
17             sub new(@)
18 0     0 1   { my $class = shift;
19              
20 0           my %args = @_;
21 0           my $self = (bless {}, $class)->init(\%args);
22              
23 0 0         if(my @missing = keys %args)
24 0           { error __xn"unknown option {options}", "unknown options {options}"
25             , scalar @missing, options => @missing;
26             }
27              
28 0           $self;
29             }
30              
31             sub init($)
32 0     0 0   { my ($self, $args) = @_;
33 0           $self->{OO_extends} = [];
34 0           $self;
35             }
36              
37             #-------------------------------------------
38              
39              
40             sub extends(;$)
41 0     0 1   { my $self = shift;
42 0           my $ext = $self->{OO_extends};
43 0           push @$ext, @_;
44              
45 0 0         wantarray ? @$ext : $ext->[0];
46             }
47              
48             #-------------------------------------------
49              
50              
51             sub mkdirhier($)
52 0     0 1   { my $thing = shift;
53 0           my @dirs = File::Spec->splitdir(shift);
54 0 0         my $path = $dirs[0] eq '' ? shift @dirs : '.';
55              
56 0           while(@dirs)
57 0           { $path = File::Spec->catdir($path, shift @dirs);
58 0 0 0       -d $path || mkdir $path
59             or fault __x"cannot create {dir}", dir => $path;
60             }
61              
62 0           $thing;
63             }
64              
65              
66             sub filenameToPackage($)
67 0     0 1   { my ($thing, $package) = @_;
68 0           $package =~ s!^lib/!!;
69 0           $package =~ s#/#::#g;
70 0           $package =~ s/\.(pm|pod)$//g;
71 0           $package;
72             }
73              
74             #-------------------------------------------
75              
76              
77             my %packages;
78             my %manuals;
79              
80             sub addManual($)
81 0     0 1   { my ($self, $manual) = @_;
82              
83 0 0 0       ref $manual && $manual->isa('OODoc::Manual')
84             or panic "manual definition requires manual object";
85              
86 0           push @{$packages{$manual->package}}, $manual;
  0            
87 0           $manuals{$manual->name} = $manual;
88 0           $self;
89             }
90              
91              
92             sub mainManual($)
93 0     0 1   { my ($self, $name) = @_;
94 0           (grep {$_ eq $_->package} $self->manualsForPackage($name))[0];
  0            
95             }
96              
97              
98             sub manualsForPackage($)
99 0     0 1   { my ($self,$name) = @_;
100 0   0       $name ||= 'doc';
101 0 0         defined $packages{$name} ? @{$packages{$name}} : ();
  0            
102             }
103              
104              
105 0     0 1   sub manuals() { values %manuals }
106              
107              
108 0     0 1   sub manual($) { $manuals{ $_[1] } }
109              
110              
111 0     0 1   sub packageNames() { keys %packages }
112              
113             1;