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

ScriptWitnessSerializer   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 47
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
dl 0
loc 47
ccs 15
cts 15
cp 1
rs 10
c 2
b 0
f 0
wmc 5
lcom 1
cbo 6

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A serialize() 0 9 2
A fromParser() 0 10 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\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