Erebot  latest
A modular IRC bot for PHP 5.3+
TextAbstract.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\Event\Match;
22 
31 {
33  protected $pattern;
34 
36  protected $requirePrefix;
37 
52  public function __construct($pattern, $requirePrefix = false)
53  {
54  $this->setPattern($pattern);
56  }
57 
64  public function getPattern()
65  {
66  return $this->pattern;
67  }
68 
78  public function setPattern($pattern)
79  {
81  throw new \Erebot\InvalidValueException('Pattern must be a string');
82  }
83 
84  $this->pattern = $pattern;
85  }
86 
95  public function getPrefixRequirement()
96  {
97  return $this->requirePrefix;
98  }
99 
111  public function setPrefixRequirement($requirePrefix = false)
112  {
113  if ($requirePrefix !== null && !is_bool($requirePrefix)) {
114  throw new \Erebot\InvalidValueException(
115  '$requirePrefix must be a boolean or null'
116  );
117  }
118 
119  $this->requirePrefix = $requirePrefix;
120  }
121 
122  public function match(\Erebot\Interfaces\Event\Base\Generic $event)
123  {
124  if (!($event instanceof \Erebot\Interfaces\Event\Base\Text)) {
125  return false;
126  }
127 
128  $prefix = $event
129  ->getConnection()->getConfig(null)
130  ->getMainCfg()->getCommandsPrefix();
131 
132  $result = $this->realMatch($prefix, $event->getText());
133  if (!is_bool($result)) {
134  throw new \Erebot\InvalidValueException('Invalid return value');
135  }
136  return $result;
137  }
138 
157  abstract protected function realMatch($prefix, $text);
158 }
Definition: CLI.php:21
setPrefixRequirement($requirePrefix=false)
$requirePrefix
Boolean or null indicating whether a prefix is required or not.
static stringifiable($item)
Definition: Utils.php:257
Abstract filter that matches events based on their content (text).
$pattern
Pattern used in comparisons, as a string.
match(\Erebot\Interfaces\Event\Base\Generic $event)
Interface for an event filter.
Definition: Match.php:30
__construct($pattern, $requirePrefix=false)