Completed
Pull Request — master (#275)
by thomas
73:15
created

ScriptInfoFactory::load()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 4.0092

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 16
ccs 11
cts 12
cp 0.9167
rs 9.2
cc 4
eloc 11
nc 4
nop 1
crap 4.0092
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
    public function load(ScriptInterface $script)
19 135
    {
20
        $classifier = ScriptFactory::scriptPubKey()->classify($script);
21 135
22 135
        if ($classifier->isMultisig()) {
23 48
            $handler = new Multisig($script);
24 6
        } elseif ($classifier->isPayToPublicKey()) {
25
            $handler = new PayToPubkey($script);
26
        } elseif ($classifier->isPayToPublicKeyHash()) {
27 42
            $handler = new PayToPubkeyHash($script);
28 129
        } else {
29
            throw new \InvalidArgumentException('Unparsable script type');
30 87
        }
31 24
32 87
        return $handler;
33 57
    }
34
}
35