Completed
Pull Request — master (#239)
by thomas
31:39 queued 14:06
created

ScriptWitnessSerializer::fromParser()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 12
ccs 0
cts 8
cp 0
rs 9.4285
cc 2
eloc 7
nc 2
nop 2
crap 6
1
<?php
2
3
namespace BitWasp\Bitcoin\Serializer\Script;
4
5
use BitWasp\Bitcoin\Script\ScriptWitness;
6
use BitWasp\Bitcoin\Script\ScriptWitnessInterface;
7
use BitWasp\Buffertools\BufferInterface;
8
use BitWasp\Buffertools\Parser;
9
use BitWasp\Buffertools\TemplateFactory;
10
11
class ScriptWitnessSerializer
12
{
13
14
    /**
15
     * @param Parser $parser
16
     * @param $size
17
     * @return ScriptWitness
18
     */
19
    public function fromParser(Parser $parser, $size)
20
    {
21
        $varstring = (new TemplateFactory())->varstring()->getTemplate();
22
        $entries = [];
23
24
        for ($j = 0; $j < $size; $j++) {
25
            list ($data) = $varstring->parse($parser);
26
            $entries[] = $data;
27
        }
28
29
        return new ScriptWitness($entries);
30
    }
31
32
    /**
33
     * @param ScriptWitnessInterface $witness
34
     * @return BufferInterface
35
     */
36 54
    public function serialize(ScriptWitnessInterface $witness)
37
    {
38 54
        $varstring = (new TemplateFactory())->varstring()->getTemplate();
39 54
        $vector =  (new TemplateFactory())->vector(function () {
40 54
        })->getTemplate();
41
42 54
        $strs= [];
43 54
        foreach ($witness as $value) {
44 30
            $strs[] = $varstring->write([$value]);
45 54
        }
46 54
        return $vector->write([$strs]);
47
    }
48
}
49