1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
<?php
/**
* Copyright 2005-2013 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
*
* @category Horde
* @copyright 2005-2013 Horde LLC
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @package SpellChecker
*/
/**
* Provides a unified spellchecker API.
*
* @author Chuck Hagenbuch <chuck@horde.org>
* @author Michael Slusarz <slusarz@horde.org>
* @category Horde
* @copyright 2005-2013 Horde LLC
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @package SpellChecker
*/
abstract class Horde_SpellChecker
{
const SUGGEST_FAST = 1;
const SUGGEST_NORMAL = 2;
const SUGGEST_SLOW = 3;
/**
* Configuration parameters.
*
* @var array
*/
protected $_params = array(
'html' => false,
'locale' => 'en',
'localDict' => array(),
'maxSuggestions' => 10,
'minLength' => 3,
'suggestMode' => self::SUGGEST_FAST
);
/**
* Attempts to return a concrete Horde_SpellChecker instance based on
* $driver.
*
* @deprecated
*
* @param string $driver The type of concrete subclass to return.
* @param array $params A hash containing any additional configuration
* or connection parameters a subclass might need.
*
* @return Horde_SpellChecker The newly created instance.
* @throws Horde_Exception
*/
static public function factory($driver, $params = array())
{
$class = 'Horde_SpellChecker_' . Horde_String::ucfirst(basename($driver));
if (class_exists($class)) {
return new $class($params);
}
throw new Horde_Exception('Driver ' . $driver . ' not found');
}
/**
* Constructor.
*
* @param array $params TODO
*/
public function __construct(array $params = array())
{
$this->setParams($params);
}
/**
* Set configuration parmeters.
*
* @param array $params Parameters to set.
*/
public function setParams($params)
{
$this->_params = array_merge($this->_params, $params);
}
/**
* Perform spellcheck.
*
* @param string $text Text to spellcheck.
*
* @return array TODO
* @throws Horde_SpellChecker_Exception
*/
abstract public function spellCheck($text);
/**
* TODO
*
* @param string $text TODO
*
* @return array TODO
*/
protected function _getWords($text)
{
return array_keys(array_flip(preg_split('/[\s\[\]]+/s', $text, -1, PREG_SPLIT_NO_EMPTY)));
}
/**
* Determine if a word exists in the local dictionary.
*
* @param string $word The word to check.
*
* @return boolean True if the word appears in the local dictionary.
*/
protected function _inLocalDictionary($word)
{
return empty($this->_params['localDict'])
? false
: in_array(Horde_String::lower($word, true, 'UTF-8'), $this->_params['localDict']);
}
}
|