Completed
Pull Request — develop (#27)
by Chris
01:52
created

StreamInf::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
c 0
b 0
f 0
rs 10
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace Chrisyue\PhpM3u8\PdFactory\Annotation;
4
5
use Chrisyue\PhpM3u8\PdFactory\PdFactoryInterface;
6
use Chrisyue\PhpM3u8\Parser\TagParser;
7
use Chrisyue\PhpM3u8\Line\Line;
8
use Chrisyue\PhpM3u8\Parser\UriParser;
9
use Chrisyue\PhpM3u8\Parser\StreamInfParser;
10
use Chrisyue\PhpM3u8\Transformer\Factory\Annotation\AttrList;
11
use Chrisyue\PhpM3u8\Parser\UriAwareAttrTagParser;
12
use Chrisyue\PhpM3u8\PropertyReader\PropertyReaderAwareInterface;
13
use Chrisyue\PhpM3u8\PropertyReader\PropertyReaderAwareTrait;
14
use Chrisyue\PhpM3u8\Line\LinesAwareInterface;
15
use Chrisyue\PhpM3u8\Line\LinesAwareTrait;
16
use Chrisyue\PhpM3u8\Dumper\UriAwareAttrTagDumper;
17
18
/**
19
 * @Annotation
20
 */
21
class StreamInf implements PdFactoryInterface, PropertyReaderAwareInterface, LinesAwareInterface
22
{
23
    use PropertyReaderAwareTrait;
24
    use LinesAwareTrait;
25
26
    private $sequence;
27
28
    public function __construct(array $options)
29
    {
30
        $this->sequence = $options['sequence'];
31
    }
32
33
    public function createParser()
34
    {
35
        return new UriAwareAttrTagParser(
36
            new Line('#EXT-X-STREAM-INF'),
37
            $this->getAttrFactory()->createTransformer(),
38
            new UriParser(),
39
            true
40
        );
41
    }
42
43
    public function createDumper()
44
    {
45
        return new UriAwareAttrTagDumper(
46
            $this->lines,
47
            '#EXT-X-STREAM-INF',
48
            $this->sequence,
49
            $this->getAttrFactory()->createReverser(),
50
            true
51
        );
52
    }
53
54
    private function getAttrFactory()
55
    {
56
        $attrFactory = new AttrList(['class' => 'Chrisyue\PhpM3u8\Document\Rfc8216\Tag\StreamInf']);
57
        $attrFactory->setReader($this->reader);
58
59
        return $attrFactory;
60
    }
61
}
62