RoPkg::Rsync::Node(3pm)

NAME
RoPkg::Rsync::Node

DESCRIPTION
A node is a rsync module. A node is formed of zero or more atoms.

Example:

 [debian]
   path    = /var/ftp/pub/mirrors/debian.org/
#This comment will show on rsync -v
   comment = Debian Mirror
   list    = yes

[debian] is the node. The node name is debian. The node has 4 atoms:

*) param atom (path)
*) comment atom (the comment)
*) param atom (comment)
*) param atom (list)

SYNOPSIS
 #!/usr/bin/perl

 use strict;
 use warnings;

 sub main {
   my $node = new RoPkg::Rsync::Node(node_name => 'debian');

   $node->AddParam('path', '/var/ftp/pub/mirrors/debian.org');
   $node->AddComment('#This comment will show on rsync -v');
   $node->AddParam('comment', 'Debian Mirror');
   $node->AddParam('list', 'yes');

   print $node->ToString();
 }

 main();

The result is:

 [debian]
        path    = /var/ftp/pub/mirrors/debian.org
 #This comment will show on rsync -v
        comment = Debian Mirror
        list    = yes

METHODS
All methods, throw the OutsideClass exception, if you use them as class methods. Besides OutsideClass the methods are throwing other exceptions as well. Refer to each method documentation for more information.

  new(%hash)
The constructor of the class. Expects a hash as parameter. At this time, the only valid option is node_name . Any other option will be discarded. The node_name is a required parameter. If is not defined, a Param::Missing exception will be raised.

Example:

 my $node = new RoPkg::Rsync::Node(node_name => 'debian');

  Add(%atom_details)
Add a new atom to the node. The atom details (type, name and value) are keys from the hash. All three parameters must be defined. There are 2 special cases: when the atom is a comment or a blank. In both cases, RoPkg::Rsync::Node generates a name for them. If the atom is a comment or a blank the returned value is the name of the atom. If the atom is a parameter, the total number of atoms for this node is returned.

Example:

 $node->Add(
    type  => 'param',
    name  => 'path',
    value => '/var/ftp/pub/mirrors/debian.org',
  );

The returned value is the total number of atoms for this node.

Example:

 $node->Add(
    type  => 'comment',
    value => '#This comment will show on rsync -v',
  );

The returned value is the name of the atom (the name is autogenerated).

Exceptions:

*) Param::Missing - $atom_details{type} is not defined
*) Param::Wrong = $atom_details{name} or $atom_details{value} are not defined

  AddParam($pname, $pvalue)
A wrapper around Add provided for comodity. See Add documentation for more details about the behaviour.

  AddComment($comment_value)
A wrapper around Add provided for comodity. See Add documentation for more details about the behaviour.

  AddBlank($blank_value)
A wrapper around Add provided for comodity. See Add documentation for more details about the behaviour.

  GetAtom(%atom_details)
Returns a RoPkg::Rsync::Atom object based on parameters specified in %atom_details. The %atom_details fields can be: type, name and value. type and value must be specified.

Exceptions:

*) Param::Missing - type/name were not specified
*) Param::Unknown - no objects were found

Take note that only the first object who match the criterias is returned.

  GetParam($name)
A wrapper around GetAtom provided for comodity. See GetAtom documentation for more details about the behaviour.

  GetComment($name)
A wrapper around GetAtom provided for comodity. See GetAtom documentation for more details about the behaviour.

  GetBlank($name)
A wrapper around GetAtom provided for comodity. See GetAtom documentation for more details about the behaviour.

  GetAll()
Returns a array with all the atoms of the node. In scalar context returns the number of atoms.

  GetAtomsNo()
Returns the number of atoms for this node.

  Has($atom)
Returns 1 if the $atom object is already a atom for this node, 0 otherwise.

  Delete($atom_name)
Removes the atom those name is $atom_name. Returns 1 on success (the atom was found and removed), 0 otherwise.

  Name($node_name)
get/set method for node name. Using this method you can change the node name or find it.

  ToString($indent, $include_node_name)
Returns the string representation of the node. If $indent is true, the atoms are indented. If $include_node_name is true, the node name will be included in the string.

Example:

 $node = new RoPkg::Rsync::Node(node_name => 'debian');
 $node->AddParam('gid', 'users');

 print $node->ToString(0, 0),$/,
       $node->ToString(0, 1),$/,
       $node->ToString(1, 1),$/,
       $node->ToString(),$/;

The result is:
 gid = users
 [debian]
 gid = users;
 [debian]
        gid = users
 [debian]
        gid = users

PREREQUISITES
perl 5.008 (or later) is required. Besides perl, you must have the following:

*) RoPkg::Exceptions
*) Scalar::Util
*) English

SEE ALSO
RoPkg::Rsync::Atom RoPkg::Rsync::ConfFile RoPkg::Exceptions

AUTHOR
Subredu Manuel <diablo@iasi.roedu.net>

LICENSE
Copyright (C) 2005 Subredu Manuel. All Rights Reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The LICENSE file contains the full text of the license.