Passed
Push — main ( 92de25...9fb01f )
by Guillaume
02:18
created

VueJSComponent::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 6
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 7
ccs 0
cts 7
cp 0
crap 2
rs 10
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
    public function __construct(string $template) {
13
        parent::__construct();
14
        $this->template["template"]="'".\str_replace(["\n","\r","\t"]," ",(\file_get_contents($template.'.html',true))."'");
15
        $this->name=$template;
16
    }
17
    
18
    public function setProps(string ...$name):void {
19
        $this->props["props"]=$name;
20
    }
21
    
22
    public function create():string {
23
        $script="Vue.component('".$this->name."',";
24
        $script.=JavascriptUtils::arrayToJsObject($this->props + $this->data + $this->methods + $this->computeds + $this->watchers + $this->hooks + $this->template);
25
        $script=JsUtils::cleanJSONFunctions($script);
26
        $script.=")";
27
        \file_put_contents($this->name.".js", $script);
28
        return $script;
29
    }
30
}