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

NAME

IRC::Indexer::Output - Turn trawler output into something useful

SYNOPSIS

  use IRC::Indexer::Output::JSON;
  # or: use IRC::Indexer::Output::YAML;
  # or: use IRC::Indexer::Output::Dumper;
  
  ## Convert trawler output into JSON, for example:
  my $output = IRC::Indexer::Output::JSON->new(
    Input => $trawler->dump,
  );
  
  ## Get output as a scalar:
  print $output->dump;
  
  ## Write output to file:
  $output->write($path);

DESCRIPTION

The IRC::Indexer::Output subclasses can convert IRC::Indexer::Bot::Trawl hashes into portable data formats.

You wouldn't normally use this module directly unless you are writing an output subclass; instead, you would use a subclass for a particular format, such as IRC::Indexer::Output::JSON.

METHODS

new

Create an output encoder; the reference to serialize must be specified:

  my $out = IRC::Indexer::Output::JSON->new(
    Input => $ref,
  );

dump

Return the serialized output as a scalar.

  my $json = $out->dump;

write

Write serialized output to a file path or an opened FH.

  $out->write($path);

Will croak() on error.

WRITING SUBCLASSES

When writing an output subclass, you will need to override the methods dump() and write() to set a proper Output:

  our @ISA = qw/IRC::Indexer::Output/;
  
  sub dump {
    my ($self) = @_;
    my $input = $self->{Input};
    ## Serialize the $input hashref any way you like:
    $self->{Output} = frobulate_my_input($input);
    $self->SUPER::dump();
  }
  
  sub write {
    my ($self, $path) = @_;
    my $input = $self->{Input};
    $self->{Output} = frobulate_my_input($input);
    $self->SUPER::write($path);
  }

AUTHOR

Jon Portnoy <avenj@cobaltirc.org>