Passed
Push — main ( 2ed84c...44e977 )
by Guillaume
02:38
created

VueJSComponent::create()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 18
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 3

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 3
eloc 12
nc 3
nop 1
dl 0
loc 18
ccs 11
cts 11
cp 1
crap 3
rs 9.8666
c 2
b 0
f 0
1
<?php
2
namespace PHPMV;
3
4
use PHPMV\js\JavascriptUtils;
5
use PHPMV\utils\JsUtils;
6
7
class VueJSComponent extends AbstractVueJS{
8
    protected $name;
9
    protected $props=["props"=>[]];
10
    protected $template;
11
    
12 1
    public function __construct(string $template) {
13 1
        parent::__construct();
14 1
        $this->template["template"]="'".\str_replace(["\n","\r","\t"]," ",(\file_get_contents($template.'.html',true))."'");
15 1
        $this->name=$template;
16 1
    }
17
    
18 1
    public function setProps(string ...$name):void {
19 1
        $this->props["props"]=$name;
20 1
    }
21
    
22 1
    public function create(bool $global=false):string {
23 1
        $script="Vue.component('".$this->name."',";
24 1
        $script.=JavascriptUtils::arrayToJsObject($this->props + $this->data + $this->methods + $this->computeds + $this->watchers + $this->hooks + $this->template);
25 1
        $script=JsUtils::cleanJSONFunctions($script);
26 1
        $script.=")";
27 1
        if(!$global){
28 1
            \file_put_contents($this->name.".js",$script);
29
        }
30
        else{
31 1
            if(file_exists("components.js")){
32 1
                \file_put_contents("components.js",PHP_EOL . $script,FILE_APPEND);
33
            }
34
            else{
35 1
                \file_put_contents("components.js",$script);
36
            }
37
            
38
        }
39 1
        return $script;
40
    }
41
    
42 1
    public function createGlobal():string{
43 1
        return $this->create(true);   
44
    }
45
}