Passed
Push — master ( 587c07...fe3a46 )
by Jakub
02:57
created

RssExtension::loadConfiguration()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 10
nc 1
nop 0
dl 0
loc 11
ccs 10
cts 10
cp 1
crap 1
rs 9.9332
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Nexendrie\Rss\Bridges\NetteDI;
5
6
use Nette\DI\CompilerExtension;
7
use Nette\Utils\Validators;
8
use Nexendrie\Rss\Generator;
9
10
/**
11
 * RssExtension for Nette DI Container
12
 *
13
 * @author Jakub Konečný
14
 */
15 1
final class RssExtension extends CompilerExtension {
16
  /** @var array */
17
  protected $defaults = [
18
    "shortenDescription" => 150,
19
    "dateTimeFormat" => "",
20
    "template" => "",
21
  ];
22
23
  protected function setProperty(\Nette\DI\ServiceDefinition &$generator, array $config, string $property): void {
24 1
    if($config[$property] !== "") {
25 1
      $generator->addSetup('$service->' . $property . " = ?", [$config[$property]]);
26
    }
27 1
  }
28
29
  /**
30
   * @throws \Nette\Utils\AssertionException
31
   */
32
  public function loadConfiguration(): void {
33 1
    $config = $this->getConfig($this->defaults);
34 1
    Validators::assertField($config, "shortenDescription", "integer");
35 1
    Validators::assertField($config, "dateTimeFormat", "string");
36 1
    Validators::assertField($config, "template", "string");
37 1
    $builder = $this->getContainerBuilder();
38 1
    $generator = $builder->addDefinition($this->prefix("generator"))
39 1
      ->setType(Generator::class)
40 1
      ->addSetup('$service->shortenDescription = ?', [$config["shortenDescription"]]);
41 1
    $this->setProperty($generator, $config, "dateTimeFormat");
42 1
    $this->setProperty($generator, $config, "template");
43 1
  }
44
}
45
?>