Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
CRAP | |
100.00% |
19 / 19 |
| BaseFormatter | |
100.00% |
1 / 1 |
|
100.00% |
5 / 5 |
11 | |
100.00% |
19 / 19 |
| __construct(array $options = array()) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setParameters(Parameters $parameters) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| getParameters() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| vksprintf($format, array $args) | |
100.00% |
1 / 1 |
5 | |
100.00% |
7 / 7 |
|||
| anonymous function ($m) use ($map) | |
100.00% |
1 / 1 |
3 | |
100.00% |
5 / 5 |
|||
| <?php | |
| namespace Environaut\Export\Formatter; | |
| use Environaut\Config\Parameters; | |
| use Environaut\Export\Formatter\IReportFormatter; | |
| use RuntimeException; | |
| /** | |
| * Simple formatter that takes messages from the results | |
| * of the given report and enhances them according to their | |
| * severity etc. | |
| */ | |
| abstract class BaseFormatter implements IReportFormatter | |
| { | |
| /** | |
| * @var Parameters options for formatting | |
| */ | |
| protected $parameters; | |
| /** | |
| * Create new instance of the formatter. | |
| * | |
| * @param array $options options string $format sprintf compatible format for the result messages | |
| */ | |
| public function __construct(array $options = array()) | |
| { | |
| $this->parameters = new Parameters($options); | |
| } | |
| /** | |
| * Sets the given runtime parameters on the formatter. | |
| * | |
| * @param Parameters $parameters associative array with options understood by this formatter | |
| * | |
| * @return $this for fluent API support | |
| */ | |
| public function setParameters(Parameters $parameters) | |
| { | |
| $this->parameters = $parameters; | |
| } | |
| /** | |
| * Returns all runtime parameters for this formatter from the config. | |
| * | |
| * @return Parameters | |
| */ | |
| public function getParameters() | |
| { | |
| return $this->parameters; | |
| } | |
| /** | |
| * Like vsprintf, but accepts keys instead of an order index. | |
| * The allowed format of named arguments is: /[a-zA-Z0-9_\-\.]+/ | |
| * | |
| * For the base version of this method by Josef Kufner see: | |
| * @see http://www.php.net/manual/de/function.vsprintf.php#110666 | |
| * | |
| * @example vskprintf( | |
| * '%param$s must be between %min$03d and %max$03d.', | |
| * array('param' => 'Value', 'min' => 3, 'max' => 99) | |
| * ) // gives: 'Value must be between 003 and 099.' | |
| * | |
| * '%s' without argument name and positional directives like '%1$s' do work. | |
| * Everything vsprintf() can do is still supported. | |
| * | |
| * @param string $format input string with formatting directives | |
| * @param array $args arguments to use for formatting directives | |
| * | |
| * @return formatted string according to given format and arguments | |
| * | |
| * @throws RuntimeException in case of non-string format string | |
| * | |
| * @author Josef Kufner <jkufner(at)gmail.com> | |
| * @author Steffen Gransow <agavi@mivesto.de> | |
| */ | |
| public static function vksprintf($format, array $args) | |
| { | |
| if (!is_string($format)) { | |
| throw new RuntimeException('Only strings are acceptable as input format.'); | |
| } | |
| if (empty($args)) { | |
| return $format; | |
| } | |
| $map = array_flip(array_keys($args)); | |
| $str = preg_replace_callback( | |
| '/(^|[^%])%([a-zA-Z0-9_\-\.]+)\$/', | |
| function ($m) use ($map) { | |
| $key = $m[2]; | |
| if (!is_numeric($key) && array_key_exists($key, $map)) { | |
| return $m[1] . '%' . ($map[$key] + 1) . '$'; | |
| } | |
| return $m[1] . '%' . $key . '$'; | |
| }, | |
| $format | |
| ); | |
| return vsprintf($str, $args); | |
| } | |
| } |