The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

CONSTRUCTOR

new

The new() constructor does not expect any options. However, this may change in the future when PR initialization is moved from Net::Gnats to this class.

 my $pr = Net::Gnats::PR->new

ACCESSORS

asHash

Returns the PR formatted as a hash. The returned hash contains field names as keys, and the corresponding field values as hash values.

CHANGE ALERT: This method now returns all FieldInstance objects.

DEPRECATION NOTICE: This accessor will be removed in the near future.

asString

Returns the PR object formatted as a Gnats recongizable string. The result is suitable for submitting to Gnats.

 my $serialized_pr = $pr->asString;

DEPRECATION NOTICE: This accessor will be removed in the near future. Instead, use:

 my $serialized_pr = $pr->serialize;

getField

Returns the string value of a PR field.

 $pr->getField('field');

DEPRECATION NOTICE: this will be deprecated in the near future. Use instead:

 $r->get_field('field')->value

getKeys

Returns the list of PR fields contained in the object.

getNumber

Returns the gnats PR number. In previous versions of gnatsperl the Number field was explicitly known to Net::Gnats::PR. This method remains for backwards compatibility.

DEPRECATION NOTICE: this will be deprecated in the near future. Use instead:

 $r->get_field('Number')->value

add_field

Adds a field instance to the fieldlist of a Nets::Gnats::PR object for fields that are not header fields.

get_field

Returns a field instance of an Nets::Gnats::PR object if field instance is defined.

get_field_from

Return an anonymous array of Nets::Gnats::PR object fields instances from a word part match.

replaceField

Sets a new value for an existing field.

If the field requires a Change Reason, and the field does not exist in the PR, then the FieldInstance for the Change Reason is created.

Returns 0 if the field does not exist.

Returns 0 if the field requires a changeReason, but one was not provided.

Returns 0 if the change did not occur successfully.

Returns 1 if the field is set and flushed to Gnats.

setField

Sets a Gnats field value. Expects two arguments: the field name followed by the field value. If the field requires a change reason, provide it as a third argument.

submit

Submit this PR to Gnats. It uses the currently active session to perform the submit.

 $pr = $pr->submit;

After a successful submit, the PR with the PR Number is returned.

 say 'My new number is: ' . $pr->get_field('Number')->value;

By default, submit will not send a PR which already has a PR Number. If your intent is to create a new PR based on this one, use the force option (may change in the future). This is useful when a series of similar PRs need to be submitted.

 $pr = $pr->submit(1);

If the PR submission based on force was not successful, the PR will return with the same PR Number.

split_csl

 Split comma-separated list.
 Commas in quotes are not separators!

fix_email_addrs

  Trim email addresses as they appear in an email From or Reply-To
  header into a comma separated list of just the addresses.

  Delete everything inside ()'s and outside <>'s, inclusive.

parse_line

Breaks down a Gnats query result.

deserialize

Deserializes a PR from Gnats and returns a hydrated PR.

 my $pr = Net::Gnats::PR->deserialize(raw => $c->response->raw,
                                      schema => $s->schema);

NAME

Net::Gnats::PR - Represents a Gnats PR.

SYNOPSIS

  use Net::Gnats;
  my $g = Net::Gnats->new();
  $g->connect();
  my @dbNames = $g->getDBNames();
  $g->login("default","somedeveloper","password");
  my $PRtwo = $g->getPRByNumber(2);
  print $PRtwo->asString();
  my $newPR = Net::Gnats::PR->new();
  $newPR->setField("Submitter-Id","developer");
  $g->submitPR($newPR);
  $g->disconnect();

DESCRIPTION

Net::Gnats::PR models a GNU Gnats PR (Problem Report). The module allows proper formatting and parsing of PRs through an object oriented interface.

The current version of Net::Gnats (as well as related information) is available at http://gnatsperl.sourceforge.net/

COMMON TASKS

CREATING A NEW PR

The Net::Gnats::PR object acts as a container object to store information about a PR (new or otherwise). A new PR is submitted to gnatsperl by constructing a PR object.

  my $newPR = Net::Gnats::PR->new();
  $newPR->setField("Submitter-Id","developer");
  $newPR->setField("Originator","Doctor Wifflechumps");
  $newPR->setField("Organization","GNU");
  $newPR->setField("Synopsis","Some bug from perlgnats");
  $newPR->setField("Confidential","no");
  $newPR->setField("Severity","serious");
  $newPR->setField("Priority","low");
  $newPR->setField("Category","gnatsperl");
  $newPR->setField("Class","sw-bug");
  $newPR->setField("Description","Something terrible happened");
  $newPR->setField("How-To-Repeat","Like this.  Like this.");
  $newPR->setField("Fix","Who knows");

Obviously, fields are dependent on a specific gnats installation, since Gnats administrators can rename fields and add constraints.

CREATING A NEW PR OBJECT FROM A PREFORMATTED PR STRING

Instead of setting each field of the PR individually, the setFromString() method is available. The string that is passed to it must be formatted in the way Gnats handles the PRs (i.e. the '>Field: Value' format. You can see this more clearly by looking at the PR files of your Gnats installation). This is useful when handling a Gnats email submission ($newPR->setFromString($email)) or when reading a PR file directly from the database.

BUGS

Bug reports are very welcome. Please submit to the project page (noted below).

AUTHOR

Mike Hoolehan, <lt>mike@sycamore.us<gt> Project hosted at sourceforge, at http://gnatsperl.sourceforge.net

COPYRIGHT

Copyright (c) 1997-2001, Mike Hoolehan. All Rights Reserved. This module is free software. It may be used, redistributed, and/or modified under the same terms as Perl itself.