NAME
Devel::PerlySense::Document::Api - The methods (and their locations) of a package
DESCRIPTION
An API is the methods/subs a module/package supports (or in some cases _may_ support).
PROPERTIES
rhSub
Hash ref with (keys: method/sub name; values: Document::Location objects).
Default: {}
The Location objects have a sub
property which is the name of the sub.
API METHODS
new()
Create new Api object.
aNameSubVisible(oPerlySense => $oPs, fileCurrent => $file)
Return array with the method/sub names in the interface that are visible.
A method is invisible if it's a private method in a base class of $fileCurrent, outside the current Project, according to $oPerlySense.
isSubVisible($oPerlySense, $fileCurrent, $nameSub)
Return true if the Sub name is visibl, else false.
A sub/method is invisible if it's a private method in a base class of $fileCurrent, outside the current Project, according to $oPerlySense.
rsSortSub($fileCurrent)
Return sub ref for sorting sub names of this Api, using the rhSub property and given the $fileCurrent.
parsePackageSetSub(raNodeSub => $raNodeSub, source => $source, oDocument => $oDocument)
Parse the entire package data, both $source and found method nodes. Add both found subs and $raNodeSub to the rhSub property.
Return 1 or die on errors.
parseSourceSetSub(source => $source, oDocument => $oDocument)
Parse the $source, looking for $self->method calls, and $self->{hash_key}, and add them to the rhSub property.
Return 1 or die on errors.
oLocationSetSub(nameSub => $nameSub, oDocument => $oDocument, [oNode => $oNode])
Set the $self->rhSub->{$nameSub} to a new Document::Location with $oDocument and possibly a row/col for $oNode. Set the rhProperty for:
sub
If no $oNode is passed, the location is supposed to be unknown, with row/col: 0/0.
Return the new oLocation. Die on errors.
mergeWithBase($oApiBase)
Adjust this object by adding appropriate parts of $oApiBase, i.e. the methods in $oApiBase->rhSub that aren't overridden in this class.
If a method has no row/col in neither base or self, it's supposed to be defined in the base class. Any method definition with row/col in self overrides one in base.
Return 1 on success. Die on errors.
isSubSupported($nameSub)
Return true if $nameSub is supported by this API, else false.
percentSupportedOf($raNameSub)
Return percent (0..100) of how many of the sub names in raNameSub that are present in the api.
percentConsistsOf($raNameSub)
Return percent (0..100) of how much of the api consists of the sub names in raNameSub.
I.e. a large API will have a low percentage. Extra sub names in $raNameSub will not affect the percentage.
AUTHOR
Johan Lindstrom, <johanl@cpan.org>
BUGS
Please report any bugs or feature requests to bug-devel-perlysense@rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Devel-PerlySense. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
Copyright 2005 Johan Lindstrom, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.