failure( $this->failureMessage( 'badbool' ) ->textListParams( array_map( [ $this, 'quoteVal' ], self::$TRUEVALS ) ) ->numParams( count( self::$TRUEVALS ) ) ->textListParams( array_merge( array_map( [ $this, 'quoteVal' ], self::$FALSEVALS ), [ MessageValue::new( 'paramvalidator-emptystring' ) ] ) ) ->numParams( count( self::$FALSEVALS ) + 1 ), $name, $value, $settings, $options ); } private function quoteVal( $v ) { return new ScalarParam( ParamType::TEXT, "\"$v\"" ); } public function stringifyValue( $name, $value, array $settings, array $options ) { return $value ? self::$TRUEVALS[0] : self::$FALSEVALS[0]; } public function getHelpInfo( $name, array $settings, array $options ) { $info = parent::getHelpInfo( $name, $settings, $options ); $info[ParamValidator::PARAM_TYPE] = MessageValue::new( 'paramvalidator-help-type-boolean' ) ->params( empty( $settings[ParamValidator::PARAM_ISMULTI] ) ? 1 : 2 ); return $info; } }