Changeset 3162632
- Timestamp:
- 10/04/2024 10:01:23 AM (18 months ago)
- Location:
- pevne-mezery/trunk
- Files:
-
- 1 added
- 2 edited
-
includes/class-content-handler.php (modified) (3 diffs)
-
pevne-mezery.php (modified) (1 diff)
-
readme.txt (added)
Legend:
- Unmodified
- Added
- Removed
-
pevne-mezery/trunk/includes/class-content-handler.php
r3162288 r3162632 13 13 public static function process_content(string $content): string 14 14 { 15 // First, apply simple replacements using str_replace for better performance16 $content = self::apply_simple_replacements($content);17 18 // Then, apply more complex replacements using regular expressions19 15 foreach (self::get_regex_rules() as $pattern => $replacement) { 20 16 $content = preg_replace($pattern, $replacement, $content); … … 22 18 23 19 return $content; 24 }25 26 /**27 * Applies simple replacements using str_replace where applicable.28 *29 * @param string $content The content to process.30 * @return string The processed content with simple replacements applied.31 */32 private static function apply_simple_replacements(string $content): string33 {34 // Use str_replace for abbreviations, titles and fixed phrases35 $search = [36 'Bc.',37 'Mgr.',38 'Ing.',39 'Ph.D.',40 'LL.B.',41 'MUDr.',42 'JUDr.',43 'prof.',44 'voj.',45 'čet.',46 'rtm.',47 'por.',48 'kpt.',49 'plk.',50 'gen.',51 'Dr.',52 'doc.',53 'cca.',54 'č.',55 'čís.',56 'čj.',57 'čp.',58 'fa',59 'fě',60 'fy',61 'kupř.',62 'mj.',63 'např.',64 'p.',65 'pí',66 'popř.',67 'př.',68 'přib.',69 'přibl.',70 'sl.',71 'str.',72 'sv.',73 'tj.',74 'tzn.',75 'tzv.',76 'zvl.'77 ];78 79 $replace = array_map(fn($abbr) => str_replace('.', '. ', $abbr), $search);80 81 // Additional replacements for dashes82 $search = array_merge($search, [' - ', ' – ', ' — ']);83 $replace = array_merge($replace, [' - ', ' – ', ' — ']);84 85 return str_replace($search, $replace, $content);86 20 } 87 21 … … 96 30 // Using combined regex for similar rules and more efficient replacements 97 31 return [ 32 // Math expressions with non-breakable spaces 33 '/(\d)\s+([+\-*\/=])\s+(\d)/u' => '$1 $2 $3', 34 98 35 // Single-character prepositions and conjunctions 99 36 '/\b(k|s|v|z|o|u|a|i)\s+/iu' => '$1 ', 100 37 101 // Mathematical operators102 '/(\d+)\s *(\+|\-|×|÷|=|≠|≈|<|>|≤|≥|~)\s*(\d+)/u' => '$1 $2 $3',38 // Units of measurement 39 '/(\d+)\s+(h|min|s|ms|m|m²|km|cm|mm|ha|km²|MB|GB|m\/s|km\/h|°|°C|°F|Kč|€|\$|%|dní|lidí)/u' => '$1 $2', 103 40 104 // Units of measurement105 '/ (\d+)\s*(h|min|s|ms|m|km|cm|mm|ha|km²|MB|GB|m\/s|km\/h|°|°C|°F|Kč|€|\$|%)/u' => '$1 $2',41 // Czech abbreviations 42 '/\b(Bc|Mgr|Ing|Ph\.D|LL\.B|MUDr|JUDr|prof|voj|čet|rtm|por|kpt|plk|gen|Dr|doc|cca|č|čís|čj|čp|fa|fě|fy|kupř|mj|např|p|pí|popř|př|přib|přibl|sl|str|sv|tj|tzn|tzv|zvl)\.\s+/u' => '$1. ', 106 43 107 // Sp ecial symbols108 '/( §|\*|†|‡|©|®|℗|‰|™|℠|–|—|→|←|↑|↓|€|£|\$|¥|¢|°|±|∞|≠|≤|≥|∑|∏|√|≈|∂|Ω|µ)\s+/u' => '$1 ',44 // Space after ordered number 45 '/(\d+\.)\s+([0-9a-záčďéěíňóřšťúýž])/u' => '$1 $2', // After ordinal numbers 109 46 ]; 110 47 } -
pevne-mezery/trunk/pevne-mezery.php
r3162288 r3162632 3 3 Plugin Name: Pevné mezery 4 4 Description: Plugin pro automatické doplnění pevných mezer podle českých typografických pravidel. Podpora WooCommerce a ACF. 5 Version: 1. 0.05 Version: 1.1.0 6 6 Requires PHP: 8.0 7 7 Author: BitSpecter
Note: See TracChangeset
for help on using the changeset viewer.