Translate extension for MediaWiki
 
Loading...
Searching...
No Matches
ValidatorFactory.php
1<?php
2declare( strict_types = 1 );
3
4namespace MediaWiki\Extension\Translate\Validation;
5
6use InvalidArgumentException;
34use MediaWiki\MediaWikiServices;
35
45 private static $validators = [
46 'BraceBalance' => BraceBalanceValidator::class,
47 'EscapeCharacter' => EscapeCharacterValidator::class,
48 'FluentVariable' => FluentVariableValidator::class,
49 'GettextNewline' => GettextNewlineValidator::class,
50 'GettextPlural' => GettextPluralValidator::class,
51 'InsertableRegex' => InsertableRegexValidator::class,
52 'InsertableRubyVariable' => InsertableRubyVariableValidator::class,
53 'IosVariable' => IosVariableValidator::class,
54 'MatchSet' => MatchSetValidator::class,
55 'MediaWikiGender' => [
56 'class' => MediaWikiGenderValidator::class,
57 'services' => [
58 'LanguageFactory',
59 'ParserFactory',
60 'UserFactory'
61 ]
62 ],
63 'MediaWikiLink' => MediaWikiLinkValidator::class,
64 'MediaWikiPageName' => MediaWikiPageNameValidator::class,
65 'MediaWikiParameter' => MediaWikiParameterValidator::class,
66 'MediaWikiPlural' => [
67 'class' => MediaWikiPluralValidator::class,
68 'services' => [
69 'LanguageFactory',
70 'ParserFactory',
71 'UserFactory'
72 ]
73 ],
74 'MediaWikiTimeList' => MediaWikiTimeListValidator::class,
75 'Newline' => NewlineValidator::class,
76 'NotEmpty' => NotEmptyValidator::class,
77 'NotSupported' => NotSupportedValidator::class,
78 'NumericalParameter' => NumericalParameterValidator::class,
79 'PercentEscape' => PercentEscapeValidator::class,
80 'Printf' => PrintfValidator::class,
81 'PrintfIndexedParameter' => PrintfIndexedParameterValidator::class,
82 'PythonInterpolation' => PythonInterpolationValidator::class,
83 'PythonNamedParameter' => PythonNamedParameterValidator::class,
84 'Replacement' => ReplacementValidator::class,
85 'SmartFormatPlural' => SmartFormatPluralValidator::class,
86 'UnicodePlural' => UnicodePluralValidator::class,
87 ];
88
97 public static function get( $id, $params = null ) {
98 if ( !isset( self::$validators[ $id ] ) ) {
99 throw new InvalidArgumentException( "Could not find validator with id - '$id'. " );
100 }
101
102 $spec = self::$validators[ $id ];
103 if ( is_string( $spec ) ) {
104 $spec = [ 'class' => $spec ];
105 }
106
107 if ( $params ) {
108 // Pass the given params as one item, instead of expanding
109 $spec['args'] = [ $params ];
110 }
111
112 return MediaWikiServices::getInstance()->getObjectFactory()->createObject( $spec );
113 }
114
123 public static function loadInstance( $class, $params = null ): MessageValidator {
124 if ( !class_exists( $class ) ) {
125 throw new InvalidArgumentException( "Could not find validator class - '$class'. " );
126 }
127
128 return new $class( $params );
129 }
130}
A factory class used to instantiate instances of pre-provided Validators.
static loadInstance( $class, $params=null)
Takes a Validator class name, and returns an instance of that class.
Ensures that only the specified escape characters are present.
Ensures that the translation has the same number of newlines as the source message at the beginning a...
A generic regex validator and insertable that can be reused by other classes.
An insertable Ruby variable validator that also acts as an InsertableSuggester.
Ensures that the translation for a message matches a value from a list.
Checks if the translation uses links that are discouraged.
An insertable wiki parameter validator that also acts as an InsertableSuggester @license GPL-2....
Handles plural validation for MediaWiki inline plural syntax.
Ensures that the translation has the same number of newlines as the source message at the beginning o...
Prevents use of unsupported features or patterns in translations.
An insertable numerical parameter validator that also acts as an InsertableSuggester @license GPL-2....
Validates that every % in a translation is followed by a printable ASCII character (0x21–0x7E,...
Validates that every % in a translation is followed by a non-zero argument index in the form N$ (e....
A validator that checks for missing and unknown printf formatting characters in translations.
An insertable python interpolation validator that also acts as an InsertableSuggester.
Validates that every % in a translation is followed by ( (named parameter).
This is a very strict validator class for Unicode CLDR based plural markup.