summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'MLEB/Translate/src/PageTranslation/TranslatablePageInsertablesSuggester.php')
-rw-r--r--MLEB/Translate/src/PageTranslation/TranslatablePageInsertablesSuggester.php29
1 files changed, 14 insertions, 15 deletions
diff --git a/MLEB/Translate/src/PageTranslation/TranslatablePageInsertablesSuggester.php b/MLEB/Translate/src/PageTranslation/TranslatablePageInsertablesSuggester.php
index 516a31bd..1c77f32e 100644
--- a/MLEB/Translate/src/PageTranslation/TranslatablePageInsertablesSuggester.php
+++ b/MLEB/Translate/src/PageTranslation/TranslatablePageInsertablesSuggester.php
@@ -7,24 +7,30 @@ use MediaWiki\Extension\Translate\TranslatorInterface\Insertable\Insertable;
use MediaWiki\Extension\Translate\TranslatorInterface\Insertable\MediaWikiInsertablesSuggester;
/**
- * Special insertables for translatable pages.
+ * Insertables for translation variables in translatable pages.
* @author Niklas Laxström
* @license GPL-2.0-or-later
* @since 2013.11
*/
class TranslatablePageInsertablesSuggester extends MediaWikiInsertablesSuggester {
+ /**
+ * Translatable pages allow naming the variables. Almost anything is
+ * allowed in a variable name, but here we are stricter to avoid too many
+ * incorrect matches when variable name is followed by non-space characters.
+ * @internal For use in this namespace only
+ */
+ public const NAME_PATTERN = '\$[\pL\pN_$-]+';
+
public function getInsertables( string $text ): array {
$insertables = parent::getInsertables( $text );
- // Translatable pages allow naming the variables. Basically anything is
- // allowed in a variable name, but here we are stricter to avoid too many
- // false positives.
$matches = [];
- preg_match_all( '/\$([a-zA-Z0-9-_]+)/', $text, $matches, PREG_SET_ORDER );
+ $pattern = '/' . self::NAME_PATTERN . '/';
+ preg_match_all( $pattern, $text, $matches, PREG_SET_ORDER );
- $new = array_map( function ( $match ) {
+ $new = array_map( static function ( $match ) {
// Numerical ones are already handled by parent
- if ( ctype_digit( $match[1] ) ) {
+ if ( ctype_digit( substr( $match[0], 1 ) ) ) {
return null;
}
@@ -32,13 +38,6 @@ class TranslatablePageInsertablesSuggester extends MediaWikiInsertablesSuggester
}, $matches );
$new = array_filter( $new );
- $insertables = array_merge( $insertables, $new );
-
- return $insertables;
+ return array_merge( $insertables, $new );
}
}
-
-class_alias(
- TranslatablePageInsertablesSuggester::class,
- '\MediaWiki\Extensions\Translate\TranslatablePageInsertablesSuggester'
-);