SourceForge Logo

NAME

Boucherot::Channels - A Boucherot's internal data structure to store channels

SYNOPSIS

  use Boucherot::Channels;
  $channels=new Boucherot::Channels;

  $channels->join('WaRlOrDz','#WaRzZZ');
  $channels->userMode('WaRlOrDz','#WaRzZZ','@');
  $channels->join('AnOTh3r][3|eeT','#WaRzZZ');
  $channels->userMode('AnOTh3r][3|eeT','#WaRzZZ','+');
  $channels->topic('#WaRzZZ','http://azerty0.multimania.com/');
  $channels->join('AnOTh3r][3|eeT','#ElEEt');

  $channels->who('#ElEEt');           # [ 'AnOTh3r][3|eeT' ]
  $channels->who('#WaRzZZ');          # [ 'AnOTh3r][3|eeT', 'WaRlOrDz' ]
  $channels->where('AnOTh3r][3|eeT'); # [ '#ElEEt', '#WaRzZZ' ]
  $channels->topic('#WaRzZZ');        # 'http://azerty0.multimania.com/'

  $channels->quit('AnOTh3r][3|eeT');
  $channels->where('AnOTh3r][3|eeT'); # [ ]
  $channels->who('#WaRzZZ');          # [ 'WaRlOrDz' ]

DESCRIPTION

Boucherot::Channels is a class for storage only. That mean you'll never join or part or even force someone to join or part a channel with that class.

GISSUML MODEL

class Boucherot::Channels

Attributs:

 {
   '_chans' => channel1 => 'infos' => 'modes' => 
                                      'topic' => 
                           'nicks' => nick1 => [ 1, 0 ] # Op
                                      nick2 => [ 0, 1 ] # Voice
               channel2 => 'nicks' => nick3 => [ 1, 0 ] # Op
                                      nick1 => [ 0, 0 ] # Nothing
               nick4    => 'nicks' => nick4 => [ 0, 0 ] # Nothing
               '='nick5 => 'nicks' => nick5 => [ 0, 0 ] # Nothing
   '_nicks' => nick1 => 'infos' => 'nick'    =>
                                   'address' => 
                                   'ircname' =>
                                   ...       
                        'chans' => channel1 => [ 1, 0 ] # Op
                                   channel2 => [ 0, 0 ] # Nothing
               nick2 => 'infos' => ...
                        'chans' => channel1 => [ 0, 1 ] # Voice
               nick3 => 'infos' => ...
                        'chans' => channel2 => [ 1, 0 ] # Op
               nick4 => 'chans' => nick4    => [ 0, 0 ] # Nothing
               nick5 => 'chans' => '='nick5 => [ 0, 0 ] # Nothing
 }

Methods:

   Constructor
 +$ new ( ) : Boucherot::Channels

   Write

 +  join ( nick, chan ) :
 +  part ( nick, chan ) :
 +  quit ( nick ) :
 +  selfpart ( chan ) :
 +  selfquit ( ) :
 +  nick ( oldnick, newnick ) :

   Read
 +  where ( nick ) : [ chan1, chan2, chan3, ... ] : ARRAY
 +  who ( chan ) : [ nick1, nick2, nick3, ... ] : ARRAY
 +  xwhere ( nick ) : [ [ chanOp1, chanOp2, ... ], [ chanVoice1, ... ], [ chanNormal1, ... ], [ nick ], [ =nick ] ] : ARRAY
 +  xwho ( chan ) : [ [ nickOp1, nickOp2, ... ], [ nickVoice1, ... ], [ nickNormal1, ...] ] : ARRAY
 +  isInChannel ( nick, chan ) : Boolean
 +  isNormal ( nick, chan ) : Boolean
 +  getNick ( nick ) : Scalar

   Read | Write
 +  op ( nick, chan [ , opStatus : Boolean ] ) : Boolean
 +  voice ( nick, chan [ , voiceStatus : Boolean ] ) : Boolean
 +  address ( nick [ , address ] ) : Scalar
 +  ircname ( nick [ , ircname ] ) : Scalar
 +  topic ( chan [ , topic ] ) : Scalar
 +  chanModes ( chan , mode [ , value ] ) : Scalar

METHODS

new

 +$ new ( ) : Boucherot::Channels

Create a new instance.

join

 +  join ( nick, chan, info=undef() ) :

Let the instance know that the ``nick'' joined the chan.

part

 +  part ( nick, chan ) :

Let the instance know that the ``nick'' parted from a chan.

quit

 +  quit ( nick ) :

Let the instance know that the ``nick'' has quit IRC.

selfpart

 +  selfpart ( chan ) :

Let the instance know that I parted the chan.

selfquit

 +  selfquit ( ) :

Let the instance know that I've quit IRC.

selfdisco

 +  selfdisco ( ) :

Let the instance know that I've been disconnected from IRC.

nick

 +  nick ( oldnick, newnick ) :

The oldnick has change nick to newnick.

where

 +  where ( nick ) : [ chan1, chan2, chan3, ... ] : ARRAY

Ask where a nick is.

whereconnect

 +  whereconnect ( ) : [ chan1, chan2, chan3, ... ] : ARRAY

Ask where should I connect. To be called only after a ``selfdisco''. Return the list of all the chan I should connect to.

who

 +  who ( chan ) : [ nick1, nick2, nick3, ... ] : ARRAY

Ask who is in a chan.

xwhere

 +  xwhere ( nick ) : [ [ chanOp1, chanOp2, ... ], [ chanVoice1, ... ], [ chanNormal1, ... ], [ nick ], [ =nick ] ] : ARRAY

Ask where a nick is.

xwho

 +  xwho ( chan ) : [ [ nickOp1, nickOp2, ... ], [ nickVoice1, ... ], [ nickNormal1, ...] ] : ARRAY

Ask who is in a chan.

isInChannel

 +  isInChannel ( nick, chan ) : Boolean

Ask if a nick is in a chan.

isNormal

 +  isNormal ( nick, chan ) : Boolean

Ask if a nick is normal (has no voice, has no chanop status) in a chan.

getNick

 +  getNick ( nick ) : Scalar

Look for the real nick (with exact case).

op

 +  op ( nick, chan [ , opStatus : Boolean ] ) : Boolean

Ask if a nick is operator in a chan.

voice

 +  voice ( nick, chan [ , voiceStatus : Boolean ] ) : Boolean

Ask if a nick has voice in a chan.

address

 +  address ( nick [ , address ] ) : Scalar

Set or get somebody's address.

ircname

 +  ircname ( nick [ , ircname ] ) : Scalar

Set or get somebody's ircname.

topic

 +  topic ( chan [ , topic ] ) : Scalar

Set or get a chan's topic.

chanModes

 +  chanModes ( chan , mode [ , value ] ) : Scalar

Set or get a chan's modes.

userMode

 +  userMode ( nick, chan [ , mode ] ) : Scalar

Set or get a somebody's mode.

AUTHORS

This class was written by Arthibus Gissehel <gissehel@vachefolle.com> in 2000.

NOTES

This class is part of the Boucherot project.