on('zalomeni_between_number_and_unit_list', Zalomeni::default_between_number_and_unit_list)); foreach ($temp_array as $j) { $j = mb_strtolower(trim($j)); $word_matches .= ($word_matches == '' ? '' : '|') . $j; } } if ($word_matches != '') { $return_array['units'] = '@(\d) ('.$word_matches.')(^|[;\.!:]| | |\?|\n|\)|<|\010|\013|$)@i'; } if (get_option('zalomeni_space_between_numbers', Zalomeni::default_space_between_numbers) == 'on') { $return_array['numbers'] = '@(\d) (\d)@i'; } if (get_option('zalomeni_spaces_in_scales', Zalomeni::default_spaces_in_scales) == 'on') { $return_array['scales'] = '@(\d) : (\d)@i'; } if (get_option('zalomeni_space_after_ordered_number', Zalomeni::default_space_after_ordered_number) == 'on') { $return_array['orders'] = '@(\d\.) ([0-9a-záčďéěíňóřšťúýž])@'; } if (get_option('zalomeni_custom_terms', Zalomeni::default_custom_terms) != '') { $term_counter = 1; $custom_terms = explode(chr(10), str_replace(chr(13), '', get_option('zalomeni_custom_terms', Zalomeni::default_custom_terms))); foreach ($custom_terms as $i) { if (strpos($i, ' ') !== false) { $term = ''; $words_split = explode(' ', $i); foreach ($words_split as $j) { $term .= ($term == '' ? '(' : ' (') . str_replace(array('/', '(', ')'), array('\\/', '\\(', '\\)'), $j) . ')'; } $term = '/' . $term . '/i'; $return_array['customterm' . $term_counter++] = $term; } } } return $return_array; } private function prepare_replacements() { $return_array = array(); foreach (array('prepositions', 'conjunctions', 'abbreviations') as $i) { if (get_option('zalomeni_'.$i, constant('Zalomeni::default_'.$i)) == 'on') { $return_array['words'] = '$1$2 '; break; } } if (get_option('zalomeni_between_number_and_unit', Zalomeni::default_between_number_and_unit) == 'on') { $return_array['units'] = '$1 $2$3'; } if (get_option('zalomeni_space_between_numbers', Zalomeni::default_space_between_numbers) == 'on') { $return_array['numbers'] = '$1 $2'; } if (get_option('zalomeni_spaces_in_scales', Zalomeni::default_spaces_in_scales) == 'on') { $return_array['scales'] = '$1 : $2'; } if (get_option('zalomeni_space_after_ordered_number', Zalomeni::default_space_after_ordered_number) == 'on') { $return_array['orders'] = '$1 $2'; } if (get_option('zalomeni_custom_terms', Zalomeni::default_custom_terms) != '') { $term_counter = 1; $custom_terms = explode(chr(10), str_replace(chr(13), '', get_option('zalomeni_custom_terms', Zalomeni::default_custom_terms))); foreach ($custom_terms as $i) { if (strpos($i, ' ') !== false) { $term = ''; $words_split = explode(' ', $i); $word_counter = 1; foreach ($words_split as $j) { $term .= ($term == '' ? '' : ' ') . '$' . $word_counter++; } $return_array['customterm' . $term_counter++] = $term; } } } return $return_array; } static public function settings_section_description() { echo( '
' . '

Plugin Zalomení
Autor: Honza Skýpala

' . '
' . '

' . Zalomeni::texturize(__('Upravujeme-li písemný dokument, radí nám Pravidla českého pravopisu nepsat neslabičné předložky v, s, z, k na konec řádku, ale psát je na stejný řádek se slovem, které nese přízvuk (např. ve spojení k mostu, s bratrem, v Plzni, z nádraží). Typografické normy jsou ještě přísnější: podle některých je nepatřičné ponechat na konci řádku jakékoli jednopísmenné slovo, tedy také předložky a spojky a, i, o, u;. Někteří pisatelé dokonce nechtějí z estetických důvodů ponechávat na konci řádků jakékoli jednoslabičné výrazy (např. ve, ke, ku, že, na, do, od, pod).', 'zalomeni')) . '

' . '

' . Zalomeni::texturize(__('Více informací na webu Ústavu pro jazyk český, Akademie věd ČR.', 'zalomeni')) . '

' . '

' . Zalomeni::texturize(__('Tento plugin řeší některé z uvedených příkladů: v textu nahrazuje běžné mezery za pevné tak, aby nedošlo k zalomení řádku v nevhodném místě.', 'zalomeni')) . '

' ); } static public function texturize($text) { if (get_option('zalomeni_matches') == '') return $text; // no settings? then fall-back to just return the content $output = ''; $curl = ''; $textarr = preg_split('/(<.*>|\[.*\])/Us', $text, -1, PREG_SPLIT_DELIM_CAPTURE); $stop = count($textarr); $no_texturize_tags = apply_filters('no_texturize_tags', array('pre', 'code', 'kbd', 'style', 'script', 'tt')); $no_texturize_shortcodes = apply_filters('no_texturize_shortcodes', array('code')); $no_texturize_tags_stack = array(); $no_texturize_shortcodes_stack = array(); for ($i = 0; $i < $stop; $i++) { $curl = $textarr[$i]; if (!empty($curl)) { global $wp_version; if ('<' != $curl{0} && '[' != $curl{0} && empty($no_texturize_shortcodes_stack) && empty($no_texturize_tags_stack)) { // If it's not a tag $curl = preg_replace(get_option('zalomeni_matches'), get_option('zalomeni_replacements'), $curl); $curl = preg_replace(get_option('zalomeni_matches'), get_option('zalomeni_replacements'), $curl); } else if (version_compare($wp_version, '2.9', '<')) { wptexturize_pushpop_element($curl, $no_texturize_tags_stack, $no_texturize_tags, '<', '>'); wptexturize_pushpop_element($curl, $no_texturize_shortcodes_stack, $no_texturize_shortcodes, '[', ']'); } else { _wptexturize_pushpop_element($curl, $no_texturize_tags_stack, $no_texturize_tags, '<', '>'); _wptexturize_pushpop_element($curl, $no_texturize_shortcodes_stack, $no_texturize_shortcodes, '[', ']'); } } $output .= $curl; } return $output; } } $wpZalomeni = new Zalomeni(); ?>