Erebot  latest
A modular IRC bot for PHP 5.3+
IrcCollator.php
1 <?php
2 /*
3  This file is part of Erebot, a modular IRC bot written in PHP.
4 
5  Copyright © 2010 François Poirotte
6 
7  Erebot is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  Erebot is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with Erebot. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 namespace Erebot;
22 
31 {
32  public function compare($a, $b)
33  {
34  return strcmp(
35  $this->normalizeNick($a),
36  $this->normalizeNick($b)
37  );
38  }
39 
40  public function limitedCompare($a, $b, $len)
41  {
42  return strncmp(
43  $this->normalizeNick($a),
44  $this->normalizeNick($b),
45  $len
46  );
47  }
48 
49  public function normalizeNick($nick)
50  {
51  $pos = strpos($nick, '!');
52  $suffix = '';
53  if ($pos !== false) {
54  $suffix = substr($nick, $pos);
55  $nick = substr($nick, 0, $pos);
56  if ($nick === false) {
57  throw new \Erebot\InvalidValueException(
58  $this->_bot->gettext('Not a valid mask')
59  );
60  }
61  }
62  return $this->realNormalizeNick($nick).$suffix;
63  }
64 
71  protected function realNormalizeNick($nick)
72  {
73  throw new \Erebot\NotImplementedException();
74  }
75 }
Definition: CLI.php:21
Interface for a class handling an IRC collation.
Definition: IrcCollator.php:32
realNormalizeNick($nick)
Definition: IrcCollator.php:71
An abstract class that provides an IRC collation.
Definition: IrcCollator.php:30
limitedCompare($a, $b, $len)
Definition: IrcCollator.php:40