Completed
Push — master ( 54964a...28b8ef )
by Giancarlos
04:15
created

TwigBuilder::addParameters()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 0
cts 5
cp 0
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 1
crap 6
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: Giansalex
5
 * Date: 09/08/2017
6
 * Time: 19:23
7
 */
8
9
namespace Greenter\Xml\Builder;
10
11
use Greenter\Xml\Exception\ValidationException;
12
use Symfony\Component\Validator\Validation;
13
14
/**
15
 * Class TwigBuilder
16
 * @package Greenter\Xml\Builder
17
 */
18
class TwigBuilder
19
{
20
    /**
21
     * Directorio de Cache para las template de Documentos.
22
     *
23
     * @var string
24
     */
25
    protected $dirCache;
26
27
    /**
28
     * Get Content XML from template.
29
     *
30
     * @param string $template
31
     * @param object $doc
32
     * @return string
33
     */
34 88
    public function render($template, $doc)
35
    {
36 88
        $this->validate($doc);
37
38 54
        $twig = $this->getRender();
39 54
        return $twig->render($template, [
40
            'doc' => $doc
41 54
        ]);
42
    }
43
44 54
    private function getRender()
45
    {
46
        //TODO: load render one time.
47 54
        $loader = new \Twig_Loader_Filesystem(__DIR__ . '/../Templates');
48 54
        $numFilter = new \Twig_SimpleFilter('n_format', function ($number, $decimals = 2) {
49 44
            return number_format($number, $decimals, '.', '');
50 54
        });
51 54
        $twig = new \Twig_Environment($loader, array(
52 54
            'cache' => $this->dirCache,
53 54
        ));
54 54
        $twig->addFilter($numFilter);
55
56 54
        return $twig;
57
    }
58
59
    /**
60
     * Validate Entity.
61
     *
62
     * @param object $entity
63
     * @throws ValidationException
64
     */
65 88
    public function validate($entity)
66
    {
67
        // TODO: init validator one time.
68 88
        $validator = Validation::createValidatorBuilder()
69 88
            ->addMethodMapping('loadValidatorMetadata')
70 88
            ->getValidator();
71
72 88
        $errs = $validator->validate($entity);
73 88
        if ($errs->count() > 0) {
74 34
            throw new ValidationException($errs);
75
        }
76 54
    }
77
78
    /**
79
     * Set argumentos.
80
     *
81
     * @param $params
82
     * @throws \Exception
83
     */
84 18
    public function setParameters($params)
85
    {
86 18
        if (!$params['cache_dir']) {
87
            return;
88
        }
89
90 18
        $this->dirCache = $params['cache_dir'];
91
    }
92
}