Completed
Pull Request — master (#240)
by thomas
73:04
created

ScriptWitnessSerializer   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 4
c 2
b 0
f 1
lcom 0
cbo 3
dl 0
loc 29
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A fromParser() 0 12 2
A serialize() 0 12 2
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\Buffer;
8
use BitWasp\Buffertools\Buffertools;
9
use BitWasp\Buffertools\Parser;
10
use BitWasp\Buffertools\TemplateFactory;
11
12
class ScriptWitnessSerializer
13
{
14
15
    public function fromParser(Parser $parser, $size)
16
    {
17
        $varstring = (new TemplateFactory())->varstring()->getTemplate();
18
        $entries = [];
19
20
        for ($j = 0; $j < $size; $j++) {
21
            list ($data) = $varstring->parse($parser);
22
            $entries[] = $data;
23
        }
24
25
        return new ScriptWitness($entries);
26
    }
27
28
    public function serialize(ScriptWitnessInterface $witness)
29
    {
30
        $varstring = (new TemplateFactory())->varstring()->getTemplate();
31
        $vector =  (new TemplateFactory())->vector(function () {
32
        })->getTemplate();
33
34
        $strs= [];
35
        foreach ($witness as $value) {
36
            $strs[] = $varstring->write([$value]);
37
        }
38
        return $vector->write([$strs]);
39
    }
40
}
41