File Coverage

lib/OODoc/Object.pm
Criterion Covered Total %
statement 12 54 22.2
branch 0 14 0.0
condition 0 8 0.0
subroutine 4 15 26.6
pod 10 11 90.9
total 26 102 25.4


line stmt bran cond sub pod time code
1             # Copyrights 2003-2013 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.00.
5              
6             package OODoc::Object;
7 2     2   9 use vars '$VERSION';
  2         4  
  2         76  
8             $VERSION = '2.00';
9              
10              
11 2     2   9 use strict;
  2         4  
  2         59  
12 2     2   9 use warnings;
  2         4  
  2         68  
13              
14 2     2   1631 use Log::Report 'oodoc';
  2         240609  
  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 0         if(@_)
44 0           { push @$ext, @_;
45             }
46              
47 0 0         wantarray ? @$ext : $ext->[0];
48             }
49              
50             #-------------------------------------------
51              
52              
53             sub mkdirhier($)
54 0     0 1   { my $thing = shift;
55 0           my @dirs = File::Spec->splitdir(shift);
56 0 0         my $path = $dirs[0] eq '' ? shift @dirs : '.';
57              
58 0           while(@dirs)
59 0           { $path = File::Spec->catdir($path, shift @dirs);
60 0 0 0       -d $path || mkdir $path
61             or fault __x"cannot create {dir}", dir => $path;
62             }
63              
64 0           $thing;
65             }
66              
67              
68             sub filenameToPackage($)
69 0     0 1   { my ($thing, $package) = @_;
70 0           $package =~ s!^lib/!!;
71 0           $package =~ s#/#::#g;
72 0           $package =~ s/\.(pm|pod)$//g;
73 0           $package;
74             }
75              
76             #-------------------------------------------
77              
78              
79             my %packages;
80             my %manuals;
81              
82             sub addManual($)
83 0     0 1   { my ($self, $manual) = @_;
84              
85 0 0 0       ref $manual && $manual->isa('OODoc::Manual')
86             or panic "manual definition requires manual object";
87              
88 0           push @{$packages{$manual->package}}, $manual;
  0            
89 0           $manuals{$manual->name} = $manual;
90 0           $self;
91             }
92              
93              
94             sub mainManual($)
95 0     0 1   { my ($self, $name) = @_;
96 0           (grep {$_ eq $_->package} $self->manualsForPackage($name))[0];
  0            
97             }
98              
99              
100             sub manualsForPackage($)
101 0     0 1   { my ($self,$name) = @_;
102 0   0       $name ||= 'doc';
103 0 0         defined $packages{$name} ? @{$packages{$name}} : ();
  0            
104             }
105              
106              
107 0     0 1   sub manuals() { values %manuals }
108              
109              
110 0     0 1   sub manual($) { $manuals{ $_[1] } }
111              
112              
113 0     0 1   sub packageNames() { keys %packages }
114              
115             1;