PluginProbe ʕ •ᴥ•ʔ
Widget Options – Advanced Conditional Visibility for Gutenberg Blocks & Classic Widgets / 4.0.5
Widget Options – Advanced Conditional Visibility for Gutenberg Blocks & Classic Widgets v4.0.5
4.2.5 4.2.4 trunk 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.2 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8 3.8.1 3.8.10 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.8.8 3.8.9 3.8.9.1 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.5.1 4.0.6 4.0.6.1 4.0.7 4.0.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.2.0 4.2.1 4.2.2 4.2.3
widget-options / includes / widgets / gutenberg / lib / experimental / l10n.php
widget-options / includes / widgets / gutenberg / lib / experimental Last commit date
fonts-api 2 years ago interactivity-api 2 years ago block-editor-settings-mobile.php 2 years ago block-editor-settings.php 2 years ago blocks.php 2 years ago class-gutenberg-rest-global-styles-revisions-controller.php 2 years ago class-wp-classic-to-block-menu-converter.php 2 years ago class-wp-navigation-fallback-gutenberg.php 2 years ago class-wp-rest-block-editor-settings-controller.php 2 years ago class-wp-rest-customizer-nonces.php 2 years ago class-wp-rest-navigation-fallback-controller.php 2 years ago editor-settings.php 2 years ago kses.php 2 years ago l10n.php 2 years ago navigation-fallback.php 2 years ago navigation-theme-opt-in.php 2 years ago rest-api.php 2 years ago
l10n.php
140 lines
1 <?php
2 /**
3 * PHP and WordPress configuration compatibility functions for the Gutenberg
4 * editor plugin changes related to i18n.
5 *
6 * @package gutenberg
7 */
8
9 /**
10 * Override core's wp_get_word_count_type() introduced in WordPress 6.2.
11 * Originally, get_word_count_type() method of the WP_Locale class is executed,
12 * but the process is simulated here.
13 *
14 * This function should not be backported to core.
15 */
16 if ( ! function_exists( 'wp_get_word_count_type' ) ) {
17 /**
18 * Retrieves the word count type based on the locale.
19 *
20 * @return string Locale-specific word count type.
21 */
22 function wp_get_word_count_type() {
23 $word_count_type = _x( 'words', 'Word count type. Do not translate!', 'gutenberg' );
24
25 // Check for valid types.
26 if ( 'characters_excluding_spaces' !== $word_count_type && 'characters_including_spaces' !== $word_count_type ) {
27 // Defaults to 'words'.
28 $word_count_type = 'words';
29 }
30 return $word_count_type;
31 }
32 }
33
34 if ( ! function_exists( 'wp_word_count' ) ) {
35 /**
36 * Count words or characters in a provided text string.
37 *
38 * @param string $text Text to count elements in.
39 * @param string $type The type of count. Accepts 'words', 'characters_excluding_spaces', or 'characters_including_spaces'.
40 * @param array $settings {
41 * Optional. Array of arguments used to overrides for settings.
42 *
43 * @type string $html_regexp Optional. Regular expression to find HTML elements.
44 * @type string $html_comment_regexp Optional. Regular expression to find HTML comments.
45 * @type string $space_regexp Optional. Regular expression to find irregular space
46 * characters.
47 * @type string $html_entity_regexp Optional. Regular expression to find HTML entities.
48 * @type string $connector_regexp Optional. Regular expression to find connectors that
49 * split words.
50 * @type string $remove_regexp Optional. Regular expression to find remove unwanted
51 * characters to reduce false-positives.
52 * @type string $astral_regexp Optional. Regular expression to find unwanted
53 * characters when searching for non-words.
54 * @type string $words_regexp Optional. Regular expression to find words by spaces.
55 * @type string $characters_excluding_spaces_regexp Optional. Regular expression to find characters which
56 * are non-spaces.
57 * @type string $characters_including_spaces_regexp Optional. Regular expression to find characters
58 * including spaces.
59 * @type array $shortcodes Optional. Array of shortcodes that should be removed
60 * from the text.
61 * }
62 * @return int The word or character count.
63 */
64 function wp_word_count( $text, $type, $settings = array() ) {
65 $defaults = array(
66 'html_regexp' => '/<\/?[a-z][^>]*?>/i',
67 'html_comment_regexp' => '/<!--[\s\S]*?-->/',
68 'space_regexp' => '/&nbsp;|&#160;/i',
69 'html_entity_regexp' => '/&\S+?;/',
70 'connector_regexp' => "/--|\x{2014}/u",
71 'remove_regexp' => "/[\x{0021}-\x{0040}\x{005B}-\x{0060}\x{007B}-\x{007E}\x{0080}-\x{00BF}\x{00D7}\x{00F7}\x{2000}-\x{2BFF}\x{2E00}-\x{2E7F}]/u",
72 'astral_regexp' => "/[\x{010000}-\x{10FFFF}]/u",
73 'words_regexp' => '/\S\s+/u',
74 'characters_excluding_spaces_regexp' => '/\S/u',
75 'characters_including_spaces_regexp' => "/[^\f\n\r\t\v\x{00AD}\x{2028}\x{2029}]/u",
76 'shortcodes' => array(),
77 );
78
79 $count = 0;
80
81 if ( ! $text ) {
82 return $count;
83 }
84
85 $settings = wp_parse_args( $settings, $defaults );
86
87 // If there are any shortcodes, add this as a shortcode regular expression.
88 if ( is_array( $settings['shortcodes'] ) && ! empty( $settings['shortcodes'] ) ) {
89 $settings['shortcodes_regexp'] = '/\\[\\/?(?:' . implode( '|', $settings['shortcodes'] ) . ')[^\\]]*?\\]/';
90 }
91
92 // Sanitize type to one of three possibilities: 'words', 'characters_excluding_spaces' or 'characters_including_spaces'.
93 if ( 'characters_excluding_spaces' !== $type && 'characters_including_spaces' !== $type ) {
94 $type = 'words';
95 }
96
97 $text .= "\n";
98
99 // Replace all HTML with a new-line.
100 $text = preg_replace( $settings['html_regexp'], "\n", $text );
101
102 // Remove all HTML comments.
103 $text = preg_replace( $settings['html_comment_regexp'], '', $text );
104
105 // If a shortcode regular expression has been provided use it to remove shortcodes.
106 if ( ! empty( $settings['shortcodes_regexp'] ) ) {
107 $text = preg_replace( $settings['shortcodes_regexp'], "\n", $text );
108 }
109
110 // Normalize non-breaking space to a normal space.
111 $text = preg_replace( $settings['space_regexp'], ' ', $text );
112
113 if ( 'words' === $type ) {
114 // Remove HTML Entities.
115 $text = preg_replace( $settings['html_entity_regexp'], '', $text );
116
117 // Convert connectors to spaces to count attached text as words.
118 $text = preg_replace( $settings['connector_regexp'], ' ', $text );
119
120 // Remove unwanted characters.
121 $text = preg_replace( $settings['remove_regexp'], '', $text );
122 } else {
123 // Convert HTML Entities to "a".
124 $text = preg_replace( $settings['html_entity_regexp'], 'a', $text );
125
126 // Remove surrogate points.
127 $text = preg_replace( $settings['astral_regexp'], 'a', $text );
128 }
129
130 // Match with the selected type regular expression to count the items.
131 preg_match_all( $settings[ $type . '_regexp' ], $text, $matches );
132
133 if ( $matches ) {
134 return count( $matches[0] );
135 }
136
137 return $count;
138 }
139 }
140