Completed
Pull Request — master (#499)
by thomas
21:08 queued 01:01
created

ScriptWitnessSerializer::fromParser()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 6
nc 2
nop 1
dl 0
loc 10
ccs 6
cts 6
cp 1
crap 2
rs 9.4285
c 0
b 0
f 0
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\Bitcoin\Serializer\Types;
8
use BitWasp\Buffertools\Buffer;
9
use BitWasp\Buffertools\BufferInterface;
10
use BitWasp\Buffertools\Parser;
11
12
class ScriptWitnessSerializer
13
{
14
    /**
15
     * @var \BitWasp\Buffertools\Types\VarString
16
     */
17
    private $varstring;
18
19
    /**
20
     * @var \BitWasp\Buffertools\Types\VarInt
21
     */
22
    private $varint;
23
24 2530
    public function __construct()
25
    {
26 2530
        $this->varstring = Types::varstring();
27 2530
        $this->varint = Types::varint();
28 2530
    }
29
30
    /**
31
     * @param Parser $parser
32
     * @return ScriptWitnessInterface
33
     */
34 22
    public function fromParser(Parser $parser)
35
    {
36 22
        $size = $this->varint->read($parser);
37 22
        $entries = [];
38 22
        for ($j = 0; $j < $size; $j++) {
39 22
            $entries[] = $this->varstring->read($parser);
40
        }
41
42 22
        return new ScriptWitness($entries);
43
    }
44
45
    /**
46
     * @param ScriptWitnessInterface $witness
47
     * @return BufferInterface
48
     */
49 44
    public function serialize(ScriptWitnessInterface $witness)
50
    {
51 44
        $binary = $this->varint->write($witness->count());
52 44
        foreach ($witness as $value) {
53 44
            $binary .= $this->varstring->write($value);
54
        }
55
56 44
        return new Buffer($binary);
57
    }
58
}
59