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

RssExtension::setProperty()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 2
nc 2
nop 3
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 2
rs 10
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
?>