/** * @return array */ public function getInfo() { $enchantResource = enchant_broker_init(); $providers = enchant_broker_describe($enchantResource); $dictionaries = enchant_broker_list_dicts($enchantResource); enchant_broker_free($enchantResource); return array('providers' => $providers, 'dictionaries' => $dictionaries); }
/** * Return a list of languages supported by this backend * * @see rcube_spellcheck_engine::languages() */ function languages() { $this->init(); $langs = array(); $dicts = enchant_broker_list_dicts($this->enchant_broker); foreach ($dicts as $dict) { $langs[] = preg_replace('/-.*$/', '', $dict['lang_tag']); } return array_unique($langs); }
public function listDictionaries() { return enchant_broker_list_dicts($this->_Broker); }
/** * Get list of available spell checking providers and their dictionaries */ public function getProviders() { wfProfileIn(__METHOD__); $providers = array(); $dictionaries = enchant_broker_list_dicts($this->broker); // group available dicionaries by provider foreach ($dictionaries as $dictionary) { $providers[$dictionary['provider_desc']][] = $dictionary['lang_tag']; } wfProfileOut(__METHOD__); return $providers; }
/** * @fn convert * @memberof Converter * @brief Public function to convert encoding of text contents. * @param $text Source text content to convert. * @param $options Options array * Available Options - * -# output (Output encoding - default is myanmar3) * -# input_font (Input encoding) * -# encoding (encoding type - ascii or utf8 - default is utf8 or none) * -# spelling_check (Enable spelling checking when converting ascii fonts.) * -# text-only (Source content is plain text or other format such as html, php etc. - default is false) * -# en_zwsp (enable or disable adding Zero-Width-Space in converted result.) * -# exceptions (commas seperated list of words or phrase to ignore from conversion process.) * -# suggestion (enable to use user suggested words list.) * * @returns string $this->text Return converted content. */ public function convert($text, $options = array()) { foreach ($options as $option_name => $option_value) { ${$option_name} = $option_value; //extract $options and set $option_name as variable name and $option_value as variable value. } if ($input_font === '' || $input_font == 'auto') { /** * @var $input */ $input = $this->enc_test($text); } else { /** * @var $input */ $input = $input_font; } /** * @var $ext_dir */ $ext_dir = 'ext/'; $rules_dir = 'rules/' . $output; /** * @var $ext_file */ if (isset($encoding) && $encoding != '') { $ext_file = $input . '-rules-' . $encoding . '.php'; } else { $ext_file = $input . '-rules.php'; } if (file_exists($this->ROOT_DIR . $ext_dir . $rules_dir . '/' . $ext_file)) { require $this->ROOT_DIR . $ext_dir . $rules_dir . '/' . $ext_file; include $this->ROOT_DIR . $ext_dir . $rules_dir . '/correction.php'; include $this->ROOT_DIR . $ext_dir . $rules_dir . '/zwsp.php'; } else { $correction = array(); $final_text = $this->ROOT_DIR . $ext_dir . $rules_dir . '/' . $ext_file . " Fatal Error: Your converting rules file cannot be found!\nFile is missing or never existed. Try another choice or contact developer!"; //return ; } if (!isset($order)) { /** * @var array $order Character ordering rules array. */ $order = array(); //if $order is not defined, set it to empty array. } /** * @var bool $en_zwsp enable/disable adding zwsp. */ if ($en_zwsp == true) { /** * @var $final_regex_array */ $final_regex_array = array_merge_recursive($order, $correction, $zwsp); //merge all defined regular expression arrays. } else { /** * @var $final_regex_array */ $final_regex_array = array_merge_recursive($order, $correction); //merge all defined regular expression arrays without zwsp array. } if ($input === $output) { foreach ($final_regex_array as $key => $value) { /** * @var $final_text */ $final_text = preg_replace('/' . $key . '/u', $value, $text); } } else { if (isset($conv_rules)) { if ($encoding == 'ascii') { /** * @fn trim_value * @brief * @param $value * @returns */ function trim_value(&$value) { /** * @var $value */ $value = trim($value); } /** * @fn ucwords_value * @brief * @param $value * @returns */ function ucwords_value(&$value) { /** * @var $value */ $value = ucwords($value); } /** * @fn space_on_short_words * @brief * @param $value * @returns */ function space_on_short_words(&$value) { /** * @var $value */ $value = preg_replace('/^[\\d\\w]{1,3}$/u', ' $0 ', $value); } if (isset($spelling_check) && false !== $spelling_check) { /** * @var $stripped_text */ $stripped_text = strip_tags($text); /** * @var $paragraph */ $paragraph = preg_split("/[\\s,]+/s", $stripped_text); array_walk($paragraph, 'trim_value'); /** * @var $words_array */ $words_array = array_unique($paragraph); array_multisort($words_array); if (function_exists('enchant_broker_init')) { /** * @var $tag */ $tag = 'en_US'; /** * @var $r */ $r = enchant_broker_init(); /** * @var $bprovides */ $bprovides = enchant_broker_describe($r); /** * @var $dicts */ $dicts = enchant_broker_list_dicts($r); if (enchant_broker_dict_exists($r, $tag)) { /** * @var $d */ $d = enchant_broker_request_dict($r, $tag); /** * @var $dprovides */ $dprovides = enchant_dict_describe($d); foreach ($words_array as $word) { if (!empty($word)) { /** * @var $wordcorrect */ $wordcorrect = enchant_dict_check($d, $word); if ($wordcorrect) { $word = preg_replace('/^\\d+$/u', '"$0"', $word); $word = preg_replace('/^[\\d\\w]{1,3}$/u', ' $0 ', $word); $english_words_array[$word] = $word; } } } enchant_broker_free_dict($d); } enchant_broker_free($r); } else { include $this->ROOT_DIR . $ext_dir . 'dic/dictionary_array.php'; array_walk($words_array, 'space_on_short_words'); foreach ($words_array as $word) { if (!empty($word)) { /** * @var $plural_ies */ $plural_ies = preg_match('/(\\w+)(ies)|(\\w+)(s)/', $word, $plural_match_ies); if (!empty($plural_match_ies)) { array_walk($plural_match_ies, 'space_on_short_words'); if ($plural_match_ies[2] == ' ies ') { /** * @var $singular */ $singular = $plural_match_ies[1] . 'y'; } elseif ($plural_match_ies[4] == ' s ') { /** * @var $singular */ $singular = $plural_match_ies[3]; } if (in_array($singular, $dictionary) || in_array(strtolower($singular), $dictionary)) { $plural_array[$plural_match_ies[0]] = $plural_match_ies[0]; } } if (in_array($word, $dictionary) || in_array(strtolower($word), $dictionary)) { $english_words_array[$word] = $word; } } } } /** * @var $english_words */ $english_words = array(); if (isset($english_words_array) && !empty($english_words_array)) { /** * @var $english_words */ $english_words = $english_words_array; } if (isset($plural_array) && !empty($plural_array)) { /** * @var $english_words */ $english_words = array_merge($english_words, $plural_array); } /** * @var $english_words */ $english_words = array_unique($english_words); } /** * @var $generated_array */ $generated_array = array(); if (true !== $text_only) { preg_match_all('/<(.*)>/uU', $text, $html_tags); foreach ($html_tags[0] as $html_tag) { if (!empty($html_tag)) { $generated_array[$html_tag] = $html_tag; } } preg_match_all('/<(style|script)(.*)<\\/(style|script)>/uUs', $text, $script_tags); foreach ($script_tags[0] as $script_tag) { if (!empty($script_tag)) { $generated_array[$script_tag] = $script_tag; } } } /** * @var $user_content_array */ $user_content_array = array(); if (isset($exceptions)) { /** * @var $exceps_array */ $exceps_array = explode(',', $exceptions); if (!empty($exceps_array)) { foreach ($exceps_array as $ignore_list) { if (!empty($ignore_list) && strlen($ignore_list) > 4) { $generated_array[$ignore_list] = $ignore_list; $user_content_array[] = $ignore_list; } } } } if (isset($suggested) && true === $suggested) { if (file_exists($this->ROOT_DIR . $ext_dir . 'dic/userdic.dic')) { /** * @var $user_dic */ $user_dic = file($this->ROOT_DIR . $ext_dir . 'dic/userdic.dic', FILE_SKIP_EMPTY_LINES); array_walk($user_dic, 'trim_value'); foreach ($user_dic as $user_word) { if (!empty($user_word)) { $generated_array[$user_word] = $user_word; $user_content_array[] = $user_word; } } } } if (!empty($user_content_array)) { /** * @var $user_content */ $user_content = ""; array_walk($user_content_array, 'trim_value'); asort($user_content_array); /** * @var $user_content_array */ $user_content_array = array_unique($user_content_array); foreach ($user_content_array as $phrase) { $user_content .= "{$phrase}\n"; } /** * @var $userdic_file */ $userdic_file = $this->ROOT_DIR . $ext_dir . 'dic/userdic.dic'; /** * @var $uaf */ $uaf = fopen($userdic_file, 'w') or die("File is not writable or directory does not exist."); fwrite($uaf, $user_content); fclose($uaf); } /** * @var $conv_array */ $conv_array = $conv_rules; if (!empty($generated_array)) { /** * @var $conv_array */ $conv_array = array_merge($generated_array, $conv_array); } if (isset($english_words) && !empty($english_words)) { /** * @var $conv_array */ $conv_array = array_merge($english_words, $conv_array); } /** * @var $final_text */ $final_text = strtr($text, $conv_array); } else { /** * @var $final_text */ $final_text = strtr($text, $conv_rules); } foreach ($final_regex_array as $key => $value) { $reg_count = 0; /** * @var $final_text */ $final_text = preg_replace('/' . $key . '/us', $value, $final_text, -1, $reg_count); // print($reg_count.'<br>'); } } else { foreach ($final_regex_array as $key => $value) { $reg_count = 0; /** * @var $final_text */ $final_text = preg_replace('/' . $key . '/us', $value, $text, -1, $reg_count); // print($reg_count.'<br>'); } } } /** * @var $text */ $this->text = $final_text; return $this->text; }
<?php $tag = 'en_US'; $r = enchant_broker_init(); $bprovides = enchant_broker_describe($r); echo "Current broker provides the following backend(s):\n"; print_r($bprovides); $dicts = enchant_broker_list_dicts($r); print_r($dicts); if (enchant_broker_dict_exists($r, $tag)) { $d = enchant_broker_request_dict($r, $tag); $dprovides = enchant_dict_describe($d); echo "dictionary {$tag} provides:\n"; $wordcorrect = enchant_dict_check($d, "soong"); print_r($dprovides); if (!$wordcorrect) { $suggs = enchant_dict_suggest($d, "soong"); echo "Suggestions for 'soong':"; print_r($suggs); } enchant_broker_free_dict($d); } else { } enchant_broker_free($r);