0, self::MODE_SOURCE => 3, self::MODE_MATHML => 5, self::MODE_LATEXML => 7, ]; /** @var ServiceOptions */ private $options; /** * @param ServiceOptions $options */ public function __construct( ServiceOptions $options ) { $options->assertRequiredOptions( self::CONSTRUCTOR_OPTIONS ); $this->options = $options; } /** * Whether the TEX filter is disabled. * @return string one of self::CHECK_* constants */ public function texCheckDisabled(): string { $setting = $this->options->get( 'MathDisableTexFilter' ); if ( $setting === true ) { // ensure backwards compatibility return self::NEVER; } $setting = strtolower( $setting ); if ( in_array( $setting, [ self::NEVER, self::ALWAYS, self::NEW ] ) ) { return $setting; } return self::ALWAYS; } /** * Returns an array of valid rendering modes. * * @return string[] */ public function getValidRenderingModes(): array { // NOTE: this method is copy-pasted into Hooks::onLoadExtensionSchemaUpdates // since we can't inject services in there. $modes = array_map( static function ( $mode ) { return self::normalizeRenderingMode( $mode ); }, $this->options->get( 'MathValidModes' ) ); return array_unique( $modes ); } /** * Checks whether $mode is a valid rendering mode. * * @param string $mode * @return bool */ public function isValidRenderingMode( string $mode ): bool { return in_array( $mode, $this->getValidRenderingModes() ); } /** * Get the normalized name of the rendering mode * @param string|int $mode * @param string $default rendering mode to use by default on unrecognized input * @return string one of the self::MODE_* constants. */ public static function normalizeRenderingMode( $mode, string $default = self::MODE_PNG ): string { if ( is_int( $mode ) ) { $userOptionToMode = array_flip( self::MODES_TO_USER_OPTIONS ); return $userOptionToMode[$mode] ?? $default; } $mode = strtolower( $mode ); if ( in_array( $mode, self::SUPPORTED_MODES ) ) { return $mode; } return $default; } }