WWW::Ohloh::API::SizeFact - statistics about a Project source code


WWW-Ohloh-API documentation Contained in the WWW-Ohloh-API distribution.

Index


Code Index:

NAME

Top

WWW::Ohloh::API::SizeFact - statistics about a Project source code

SYNOPSIS

Top

    use WWW::Ohloh::API;

    my $ohloh = WWW::Ohloh::API->new( api_key => $my_api_key );
    my @size_facts = $ohloh->get_size_facts( $project_id );

    my $size_fact = shift @size_facts;

    print $size_fact->month;

DESCRIPTION

Top

W::O::A::SizeFact contains the statistics associated with an Ohloh project. To be properly populated, it must be created via the get_size_facts method of a WWW::Ohloh::API object.

METHODS

Top

API Data Accessors

month

Indicate the month covered by this SizeFact.

code

The total net lines of code, excluding comments and blanks, as of the end of this month.

comments

The total net lines of comments as of the end of this month.

blanks

The total net blank lines as of the end of this month.

comment_ratio

The fraction of net lines which are comments as of the end of this month.

man_months

The cumulative total months of effort expended by all contributors on this project, including this month.

stats

 ( $month, $commits, $code, $blanks, $comments, $comment_ratio, $man_month )
    = $size_fact->stats;

Return the facts as an array.

Other Methods

as_xml

Return the size fact as an XML string. Note that this is not the exact xml document as returned by the Ohloh server.

Overloading

Array reference

    @stats = @$size_fact;   # equivalent to 
                            # @stats = $size_fact->stats

Using the object as an array reference can be used as a shortcut for the method stats.

SEE ALSO

Top

*

WWW::Ohloh::API.

*

Ohloh API reference: http://www.ohloh.net/api/getting_started

*

Ohloh size_fact API reference: http://www.ohloh.net/api/reference/size_fact

VERSION

Top

This document describes WWW::Ohloh::API version 0.3.1

BUGS AND LIMITATIONS

Top

WWW::Ohloh::API is very extremely alpha quality. It'll improve, but till then: Caveat emptor.

The as_xml() method returns a re-encoding of the account data, which can differ of the original xml document sent by the Ohloh server.

Please report any bugs or feature requests to bug-www-ohloh-api@rt.cpan.org, or through the web interface at http://rt.cpan.org.

AUTHOR

Top

Yanick Champoux <yanick@cpan.org>

LICENCE AND COPYRIGHT

Top


WWW-Ohloh-API documentation Contained in the WWW-Ohloh-API distribution.

package WWW::Ohloh::API::SizeFact;

use strict;
use warnings;

use Carp;
use Object::InsideOut;
use XML::LibXML;
use WWW::Ohloh::API::KudoScore;

our $VERSION = '0.3.1';

my @ohloh_of : Field : Arg(ohloh) : Get(_ohloh);
my @request_url_of : Field : Arg(request_url) : Get( request_url );
my @xml_of : Field : Arg(xml);

my @api_fields = qw/
  month
  code
  comments
  blanks
  comment_ratio
  commits
  man_months
  /;

my @month_of : Field : Set(_set_month) : Get(month);
my @code_of : Field : Set(_set_code) : Get(code);
my @comments_of : Field : Set(_set_comments) : Get(comments);
my @blanks_of : Field : Set(_set_blanks) : Get(blanks);
my @comment_ratio_of : Field : Set(_set_comment_ratio) : Get(comment_ratio);
my @commits_of : Field : Set(_set_commits) : Get(commits);
my @man_months_of : Field : Set(_set_man_months) : Get(man_months);

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub _init : Init {
    my $self = shift;

    my $dom = $xml_of[$$self] or return;

    for my $f (@api_fields) {
        my $m = "_set_$f";

        $self->$m( $dom->findvalue("$f/text()") );
    }

}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub _overload_array_ref : Arrayify {
    my $self = shift;

    return [ $self->stats ];
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub stats {
    my $self = shift;

    return map { $self->$_ } qw/
      month
      commits
      code
      blanks
      comments
      comment_ratio
      man_months
      /;
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub as_xml {
    my $self = shift;
    my $xml;
    my $w = XML::Writer->new( OUTPUT => \$xml );

    $w->startTag('size_fact');

    for my $attr (@api_fields) {
        $w->dataElement( $attr => $self->$attr );
    }

    $w->endTag;

    return $xml;
}

'end of WWW::Ohloh::API::SizeFact';
__END__