---
name: "RoPkg::Rsync::Atom"
section: "3pm"
platform: "linux"
package: "libropkg-perl"
version: "0.4-1.3"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/RoPkg::Rsync::Atom"
---

# RoPkg::Rsync::Atom(3pm)

the smallest unit in a rsync configuration file

## NAME

RoPkg::Rsync::Atom - the smallest unit in a rsync configuration file

## SYPONSIS

```
 #!/usr/bin/perl

 use strict;
 use warnings;
 use RoPkg::Rsync::Atom;
 sub main {
   my $a = new RoPkg::Rsync::Atom(
                 type  => 'param',
                 name  => 'uid',
                 value => 'nobody',
               );
   print $a->ToString(0),$/;
   return 0;
 }
 main();
```

## DESCRIPTION

RoPkg::Rsync::Atom is a class used by RoPkg::Rsync modules. The Atom is considered the smallest part of any rsync configuration file. An atom can be (at this moment):

- param

  - blank

  - comment

  ## METHODS

All methods, throw the OutsideClass exception, if you use them as class methods.

**Example**:

```
 perl -MRoPkg::Rsync::Atom -e 'RoPkg::Rsync::Atom->Type;'
 Called outside class instance
```

Besides *OutsideClass* the methods are throwing other exceptions as well. Refer to each method documentation for more information.

### new()

The constructor of the class. **new** accepts 3 parameters grouped inside a hash:

- \*) type - type of the atom

  - \*) name - name of the atom

  - \*) value - value of the atom

  The **type** parameter must always be present. If the **type** parameter is not present, a *Param::Missing* exception is raised. At this moment, the atoms have 3 types:

- \*) param - a parameter in the standard form (name = value)

  - \*) comment - a comment

  - \*) blank - a blank line (or only with separators)

  If the value of the **type** parameter is not one of the ones specified a *Param::Wrong* exception is raised.

*Examples:*

**example 1 (param)**:

```
 my $a = new RoPkg::Rsync::Atom(
               type  => 'param',
               name  => 'gid',
               value => 'users',
             );
```

**example 2 (param)**:

```
 my $a = new RoPkg::Rsync::Atom(type => 'param');
 $a->Name('gid');
 $a->Value('users');
 print 'Name of the atom is:',$a->Name,$/;
```

**example 3 (comment)**:

```
 my $a = new RoPkg::Rsync::Atom(
               type  => 'comment',
               value => '# this is the group id',
             );
```

**example 4 (blank)**:

```
 my $a = new RoPkg::Rsync::Atom(
               type  => 'blank',
               value => q{ },
             );
```

### Name($new\_name)

The **Name** method is a get/set method. If *$new\_name* exists (and his value is defined) then the set behaviour is selected, otherwise the method acts as a get method. Returns the name of the atom.

### Value($new\_value)

The **Value** method is a get/set method. If *$new\_value* exists (and his value is defined) then the set behaviour is selected, otherwise the method acts as a get method. Returns the value of the atom.

### ToString($indent, $spaces)

Returns the string representation of the atom. Accepts 2 parameters: *indent* and *spaces*. **$indent** is a true/false value specifing that the string representation should be prefixed with a tab character; **$spaces** is used to compute the number of spaces that should be added after the atom name, so that the total length of the parameter name to match the *$spaces* value.

**Example**:

```
 my $a = new RoPkg::Rsync::Atom(
               type  => 'param',
               name  => 'gid',
               value => 'users',
             );
 print $a->ToString(0, 6),$/,
       $a->ToString(0, 5),$/,
       $a->ToString(0, 4),$/,
       $a->ToString(0, 3),$/,
       $a->ToString(1, 6),$/,
       $a->ToString(1, 5),$/,
       $a->ToString(1, 4),$/,
       $a->ToString(1, 3),$/;
```

The result is:\
  gid    = users\
  gid   = users\
  gid  = users\
  gid = users\
         gid    = users\
         gid   = users\
         gid  = users\
         gid = users

### Type

Returns the type (string representation) of the atom.

## PREREQUISITES

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

- RoPkg::Exceptions

  - English

  - Scalar::Util

  ## SEE ALSO

RoPkg::Rsync::Node 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.
