452 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			452 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Safe;
 | |
| 
 | |
| use Safe\Exceptions\PspellException;
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  *
 | |
|  * @param int $dictionary_link
 | |
|  * @param string $word The added word.
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_add_to_personal(int $dictionary_link, string $word): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_add_to_personal($dictionary_link, $word);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  *
 | |
|  * @param int $dictionary_link
 | |
|  * @param string $word The added word.
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_add_to_session(int $dictionary_link, string $word): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_add_to_session($dictionary_link, $word);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  *
 | |
|  * @param int $dictionary_link
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_clear_session(int $dictionary_link): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_clear_session($dictionary_link);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Create a config used to open a dictionary.
 | |
|  *
 | |
|  * pspell_config_create has a very similar syntax to
 | |
|  * pspell_new. In fact, using
 | |
|  * pspell_config_create immediately followed by
 | |
|  * pspell_new_config will produce the exact same result.
 | |
|  * However, after creating a new config, you can also use
 | |
|  * pspell_config_* functions before calling
 | |
|  * pspell_new_config to take advantage of some
 | |
|  * advanced functionality.
 | |
|  *
 | |
|  * For more information and examples, check out inline manual pspell
 | |
|  * website:http://aspell.net/.
 | |
|  *
 | |
|  * @param string $language The language parameter is the language code which consists of the
 | |
|  * two letter ISO 639 language code and an optional two letter ISO
 | |
|  * 3166 country code after a dash or underscore.
 | |
|  * @param string $spelling The spelling parameter is the requested spelling for languages
 | |
|  * with more than one spelling such as English. Known values are
 | |
|  * 'american', 'british', and 'canadian'.
 | |
|  * @param string $jargon The jargon parameter contains extra information to distinguish
 | |
|  * two different words lists that have the same language and
 | |
|  * spelling parameters.
 | |
|  * @param string $encoding The encoding parameter is the encoding that words are expected to
 | |
|  * be in.  Valid values are 'utf-8', 'iso8859-*', 'koi8-r',
 | |
|  * 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned
 | |
|  * 32'. This parameter is largely untested, so be careful when
 | |
|  * using.
 | |
|  * @return int Returns a pspell config identifier.
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_config_create(string $language, string $spelling = null, string $jargon = null, string $encoding = null): int
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($encoding !== null) {
 | |
|         $result = \pspell_config_create($language, $spelling, $jargon, $encoding);
 | |
|     } elseif ($jargon !== null) {
 | |
|         $result = \pspell_config_create($language, $spelling, $jargon);
 | |
|     } elseif ($spelling !== null) {
 | |
|         $result = \pspell_config_create($language, $spelling);
 | |
|     } else {
 | |
|         $result = \pspell_config_create($language);
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * This function is
 | |
|  * currently not documented; only its argument list is available.
 | |
|  *
 | |
|  *
 | |
|  * @param int $conf
 | |
|  * @param string $directory
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_config_data_dir(int $conf, string $directory): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_config_data_dir($conf, $directory);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * This function is
 | |
|  * currently not documented; only its argument list is available.
 | |
|  *
 | |
|  *
 | |
|  * @param int $conf
 | |
|  * @param string $directory
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_config_dict_dir(int $conf, string $directory): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_config_dict_dir($conf, $directory);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  *
 | |
|  * @param int $dictionary_link
 | |
|  * @param int $n Words less than n characters will be skipped.
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_config_ignore(int $dictionary_link, int $n): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_config_ignore($dictionary_link, $n);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  *
 | |
|  * @param int $dictionary_link
 | |
|  * @param int $mode The mode parameter is the mode in which spellchecker will work.
 | |
|  * There are several modes available:
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * PSPELL_FAST - Fast mode (least number of
 | |
|  * suggestions)
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * PSPELL_NORMAL - Normal mode (more suggestions)
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * PSPELL_BAD_SPELLERS - Slow mode (a lot of
 | |
|  * suggestions)
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_config_mode(int $dictionary_link, int $mode): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_config_mode($dictionary_link, $mode);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Set a file that contains personal wordlist. The personal wordlist will be
 | |
|  * loaded and used in addition to the standard one after you call
 | |
|  * pspell_new_config. The file is also the file where
 | |
|  * pspell_save_wordlist will save personal wordlist to.
 | |
|  *
 | |
|  * pspell_config_personal should be used on a config
 | |
|  * before calling pspell_new_config.
 | |
|  *
 | |
|  * @param int $dictionary_link
 | |
|  * @param string $file The personal wordlist. If the file does not exist, it will be created.
 | |
|  * The file should be writable by whoever PHP runs as (e.g. nobody).
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_config_personal(int $dictionary_link, string $file): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_config_personal($dictionary_link, $file);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Set a file that contains replacement pairs.
 | |
|  *
 | |
|  * The replacement pairs improve the quality of the spellchecker. When a word
 | |
|  * is misspelled, and a proper suggestion was not found in the list,
 | |
|  * pspell_store_replacement can be used to store a
 | |
|  * replacement pair and then pspell_save_wordlist to
 | |
|  * save the wordlist along with the replacement pairs.
 | |
|  *
 | |
|  * pspell_config_repl should be used on a config
 | |
|  * before calling pspell_new_config.
 | |
|  *
 | |
|  * @param int $dictionary_link
 | |
|  * @param string $file The file should be writable by whoever PHP runs as (e.g. nobody).
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_config_repl(int $dictionary_link, string $file): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_config_repl($dictionary_link, $file);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * This function determines whether run-together words will be treated as
 | |
|  * legal compounds.  That is, "thecat" will be a legal compound, although
 | |
|  * there should be a space between the two words. Changing this setting only
 | |
|  * affects the results returned by pspell_check;
 | |
|  * pspell_suggest will still return suggestions.
 | |
|  *
 | |
|  * pspell_config_runtogether should be used on a config
 | |
|  * before calling pspell_new_config.
 | |
|  *
 | |
|  * @param int $dictionary_link
 | |
|  * @param bool $flag TRUE if run-together words should be treated as legal compounds,
 | |
|  * FALSE otherwise.
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_config_runtogether(int $dictionary_link, bool $flag): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_config_runtogether($dictionary_link, $flag);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * pspell_config_save_repl determines whether
 | |
|  * pspell_save_wordlist will save the replacement pairs
 | |
|  * along with the wordlist. Usually there is no need to use this function
 | |
|  * because if pspell_config_repl is used, the
 | |
|  * replacement pairs will be saved by
 | |
|  * pspell_save_wordlist anyway, and if it is not,
 | |
|  * the replacement pairs will not be saved.
 | |
|  *
 | |
|  * pspell_config_save_repl should be used on a config
 | |
|  * before calling pspell_new_config.
 | |
|  *
 | |
|  * @param int $dictionary_link
 | |
|  * @param bool $flag TRUE if replacement pairs should be saved, FALSE otherwise.
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_config_save_repl(int $dictionary_link, bool $flag): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_config_save_repl($dictionary_link, $flag);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  *
 | |
|  * @param int $config The config parameter is the one returned by
 | |
|  * pspell_config_create when the config was created.
 | |
|  * @return int Returns a dictionary link identifier on success.
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_new_config(int $config): int
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_new_config($config);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * pspell_new opens up a new dictionary and
 | |
|  * returns the dictionary link identifier for use in other pspell
 | |
|  * functions.
 | |
|  *
 | |
|  * For more information and examples, check out inline manual pspell
 | |
|  * website:http://aspell.net/.
 | |
|  *
 | |
|  * @param string $language The language parameter is the language code which consists of the
 | |
|  * two letter ISO 639 language code and an optional two letter ISO
 | |
|  * 3166 country code after a dash or underscore.
 | |
|  * @param string $spelling The spelling parameter is the requested spelling for languages
 | |
|  * with more than one spelling such as English. Known values are
 | |
|  * 'american', 'british', and 'canadian'.
 | |
|  * @param string $jargon The jargon parameter contains extra information to distinguish
 | |
|  * two different words lists that have the same language and
 | |
|  * spelling parameters.
 | |
|  * @param string $encoding The encoding parameter is the encoding that words are expected to
 | |
|  * be in.  Valid values are 'utf-8', 'iso8859-*', 'koi8-r',
 | |
|  * 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned
 | |
|  * 32'. This parameter is largely untested, so be careful when
 | |
|  * using.
 | |
|  * @param int $mode The mode parameter is the mode in which spellchecker will work.
 | |
|  * There are several modes available:
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * PSPELL_FAST - Fast mode (least number of
 | |
|  * suggestions)
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * PSPELL_NORMAL - Normal mode (more suggestions)
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * PSPELL_BAD_SPELLERS - Slow mode (a lot of
 | |
|  * suggestions)
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * PSPELL_RUN_TOGETHER - Consider run-together words
 | |
|  * as legal compounds.  That is, "thecat" will be a legal compound,
 | |
|  * although there should be a space between the two words. Changing this
 | |
|  * setting only affects the results returned by
 | |
|  * pspell_check; pspell_suggest
 | |
|  * will still return suggestions.
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * Mode is a bitmask constructed from different constants listed above.
 | |
|  * However, PSPELL_FAST,
 | |
|  * PSPELL_NORMAL and
 | |
|  * PSPELL_BAD_SPELLERS are mutually exclusive, so you
 | |
|  * should select only one of them.
 | |
|  * @return int Returns the dictionary link identifier on success.
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_new(string $language, string $spelling = null, string $jargon = null, string $encoding = null, int $mode = 0): int
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($mode !== 0) {
 | |
|         $result = \pspell_new($language, $spelling, $jargon, $encoding, $mode);
 | |
|     } elseif ($encoding !== null) {
 | |
|         $result = \pspell_new($language, $spelling, $jargon, $encoding);
 | |
|     } elseif ($jargon !== null) {
 | |
|         $result = \pspell_new($language, $spelling, $jargon);
 | |
|     } elseif ($spelling !== null) {
 | |
|         $result = \pspell_new($language, $spelling);
 | |
|     } else {
 | |
|         $result = \pspell_new($language);
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
|     return $result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  *
 | |
|  * @param int $dictionary_link A dictionary link identifier opened with
 | |
|  * pspell_new_personal.
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_save_wordlist(int $dictionary_link): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_save_wordlist($dictionary_link);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  *
 | |
|  *
 | |
|  * @param int $dictionary_link A dictionary link identifier, opened with
 | |
|  * pspell_new_personal
 | |
|  * @param string $misspelled The misspelled word.
 | |
|  * @param string $correct The fixed spelling for the misspelled word.
 | |
|  * @throws PspellException
 | |
|  *
 | |
|  */
 | |
| function pspell_store_replacement(int $dictionary_link, string $misspelled, string $correct): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \pspell_store_replacement($dictionary_link, $misspelled, $correct);
 | |
|     if ($result === false) {
 | |
|         throw PspellException::createFromPhpError();
 | |
|     }
 | |
| }
 |