Completed
Push — master ( 3c06bf...ecab00 )
by thomas
43:28 queued 40:12
created

ScriptInfoFactory::load()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 5.5021

Importance

Changes 2
Bugs 0 Features 1
Metric Value
dl 0
loc 16
ccs 6
cts 11
cp 0.5455
rs 9.2
c 2
b 0
f 1
cc 4
eloc 11
nc 4
nop 1
crap 5.5021
1
<?php
2
3
namespace BitWasp\Bitcoin\Script\Factory;
4
5
use BitWasp\Bitcoin\Script\ScriptFactory;
6
use BitWasp\Bitcoin\Script\ScriptInfo\ScriptHash;
7
use BitWasp\Bitcoin\Script\ScriptInfo\Multisig;
8
use BitWasp\Bitcoin\Script\ScriptInfo\PayToPubkey;
9
use BitWasp\Bitcoin\Script\ScriptInfo\PayToPubkeyHash;
10
use BitWasp\Bitcoin\Script\ScriptInterface;
11
12
class ScriptInfoFactory
13
{
14
    /**
15
     * @param ScriptInterface $script
16
     * @return \BitWasp\Bitcoin\Script\ScriptInfo\ScriptInfoInterface
17
     */
18 6
    public function load(ScriptInterface $script)
19
    {
20 6
        $classifier = ScriptFactory::scriptPubKey()->classify($script);
21
22 6
        if ($classifier->isMultisig()) {
23 6
            $handler = new Multisig($script);
24 6
        } elseif ($classifier->isPayToPublicKey()) {
25
            $handler = new PayToPubkey($script);
26
        } elseif ($classifier->isPayToPublicKeyHash()) {
27
            $handler = new PayToPubkeyHash($script);
28
        } else {
29
            throw new \InvalidArgumentException('Unparsable script type');
30
        }
31
32 6
        return $handler;
33
    }
34
}
35