Test Failed
Push — main ( 26a6bd...237de1 )
by Guillaume
13:05
created

AbstractVueJS   A

Complexity

Total Complexity 36

Size/Duplication

Total Lines 156
Duplicated Lines 0 %

Test Coverage

Coverage 90.22%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 54
c 2
b 0
f 0
dl 0
loc 156
ccs 83
cts 92
cp 0.9022
rs 9.52
wmc 36

34 Methods

Rating   Name   Duplication   Size   Complexity  
A onUpdatedNextTick() 0 2 1
A addData() 0 2 1
A onCreated() 0 2 1
A onBeforeMount() 0 2 1
A addWatcher() 0 2 1
A onBeforeDestroy() 0 2 1
A onBeforeCreate() 0 2 1
A addMethod() 0 2 1
A __construct() 0 8 1
A addDataRaw() 0 2 1
A addComputed() 0 3 2
A addFilter() 0 2 1
A onBeforeUpdate() 0 2 1
A addHook() 0 2 1
A onDestroyed() 0 2 1
A onMounted() 0 2 1
A onUpdated() 0 2 1
A addGlobalObservable() 0 2 1
A setData() 0 2 1
A getWatchers() 0 2 1
A setMethods() 0 2 1
A addGlobalFilter() 0 2 1
A generateFunction() 0 2 1
A setDirectives() 0 2 1
A getMethods() 0 2 1
A addDirective() 0 6 2
A setComputeds() 0 2 1
A getDirectives() 0 2 1
A removeQuotes() 0 2 1
A getHooks() 0 2 1
A setWatchers() 0 2 1
A setHooks() 0 2 1
A getComputeds() 0 2 1
A getData() 0 2 1
1
<?php
2
namespace PHPMV;
3
4
use PHPMV\js\JavascriptUtils;
5
6
/**
7
 * Created by PhpStorm.
8
 * User: qgorak
9
 * Date: 19/11/2020
10
 * Time: 14:20
11
 */
12
class AbstractVueJS {
13
    static private $removeQuote = ["start"=>"!!%","end"=>"%!!"];
14
    static protected $global;
15
	protected $data;
16
	protected $methods;
17
	protected $computeds;
18
	protected $watchers;
19
	protected $directives;
20
	protected $filters;
21
	protected $hooks;
22
	
23 11
	public function __construct() {
24 11
	    $this->data=[];
25 11
	    $this->methods=[];
26 11
	    $this->computeds=[];
27 11
	    $this->watchers=[];
28 11
	    $this->directives=[];
29 11
	    $this->filters=[];
30 11
	    $this->hooks=[];
31 11
	}
32
	
33 2
	public function addHook(string $name,string $body):void {
34 2
	    $this->hooks[$name] = self::generateFunction($body);
35 2
	}
36
	
37 1
	public function onBeforeCreate(string $body):void {
38 1
		$this->addHook("beforeCreate", $body);
39 1
	}
40
	
41 1
	public function onCreated(string $body):void {
42 1
		$this->addHook("created", $body);
43 1
	}
44
	
45 1
	public function onBeforeMount(string $body):void {
46 1
		$this->addHook("beforeMount", $body);
47 1
	}
48
	
49 2
	public function onMounted(string $body):void {
50 2
		$this->addHook("mounted", $body);
51 2
	}
52
	
53 1
	public function onBeforeUpdate(string $body):void {
54 1
		$this->addHook("beforeUpdate", $body);
55 1
	}
56
	
57 1
	public function onUpdated(string $body):void {
58 1
		$this->addHook("updated", $body);
59 1
	}
60
	
61 1
	public function onUpdatedNextTick(string $body):void {
62 1
		$this->addHook("updated", "this.\$nextTick(function () {".$body."})");
63 1
	}
64
	
65 1
	public function onBeforeDestroy(string $body):void {
66 1
		$this->addHook("beforeDestroy", $body);
67 1
	}
68
	
69 1
	public function onDestroyed(string $body):void {
70 1
		$this->addHook("destroyed", $body);
71 1
	}
72
73 3
	public function addData(string $name,$value):void {
74 3
        $this->data["data"][$name]=$value;
75 3
	}
76
77 2
	public function addDataRaw(string $name,string $value):void {
78 2
        $this->data["data"][$name]=self::$removeQuote["start"].$value.self::$removeQuote["end"];
79 2
	}
80
	
81 4
	public function addMethod(string $name,string $body, array $params = []):void {
82 4
        $this->methods["methods"][$name]=self::generateFunction($body,$params);
83 4
	}
84
	
85 3
	public function addComputed(string $name,string $get,string $set=null):void {
86 3
	    $vc=(is_null($set)) ? self::generateFunction($get) : self::$removeQuote["start"]."{ get: ".self::generateFunction($get).", set: ".self::generateFunction($set,["v"])." }".self::$removeQuote["end"];
87 3
	    $this->computeds["computeds"][self::$removeQuote["start"].$name.self::$removeQuote["end"]]=$vc;
88 3
	}
89
	
90 2
	public function addWatcher(string $var,string $body,array $params=[]):void {
91 2
	    $this->watchers["watch"][$var]=self::generateFunction($body,$params);
92 2
	}
93
94
	public function addFilter(string $name,string $body, array $params = []):void {
95
        $this->methods["filters"][self::$removeQuote["start"].$name.self::$removeQuote["end"]]=self::generateFunction($body,$params);
96
    }
97
98
    public function addDirective(string $name,array $hookFunction):void {
99
	    $name = self::removeQuotes($name);
100
	    foreach ($hookFunction as $key=>$value){
101
	        $hookFunction[$key] = self::generateFunction($value,['el', 'binding', 'vnode', 'oldVnode']);
102
        }
103
	    $this->directives["directives"][$name] = self::removeQuotes(JavascriptUtils::arrayToJsObject($hookFunction));
104
    }
105
106 4
    public static function addGlobalFilter(string $name,string $body, array $params = []):void {
107 4
        self::$global[]=self::$removeQuote["start"]."Vue.filter('".$name."',".self::generateFunction($body,$params).");".self::$removeQuote["end"];
108
    }
109
110 1
    public static function addGlobalObservable(string $varName, array $object){
111 1
        self::$global[]=self::$removeQuote["start"]."const ".$varName." = Vue.observable(". JavascriptUtils::arrayToJsObject($object) .");".self::$removeQuote["end"];
112 1
    }
113
114 3
	public function getData():array {
115 3
	    return $this->data;
116
	}
117
	
118 1
	public function setData(array $data):void {
119 1
	    $this->data=$data;
120 1
	}
121
	
122 3
	public function getMethods():array {
123 3
	    return $this->methods;
124
	}
125
	
126 1
	public function setMethods(array $methods):void {
127 1
	    $this->methods=$methods;
128 1
	}
129
	
130 2
	public function getComputeds():array {
131 2
		return $this->computeds;
132
	}
133
134 1
	public function setComputeds(array $computeds):void {
135 1
		$this->computeds = $computeds;
136 1
	}
137
138 2
	public function getWatchers():array {
139 2
	    return $this->watchers;
140
	}
141
	
142 1
	public function setWatchers(array $watchers):void {
143 1
		$this->watchers = $watchers;
144 1
	}
145
146 6
    public function getDirectives():array {
147 6
        return $this->directives;
148
    }
149 1
150
    public function setDirectives(array $directives):void {
151
        $this->directives = $directives;
152
    }
153
	
154
	public function getHooks():array {
155
		return $this->hooks;
156
	}
157
	
158
	public function setHooks(array $hooks):void {
159
		$this->hooks = $hooks;
160
	}
161
162
	public static function removeQuotes(string $body):string{
163
        return self::$removeQuote["start"].$body.self::$removeQuote["end"];
164
    }
165
166
	public static function generateFunction(string $body, array $params = []):string {
167
        return self::removeQuotes("function(".implode(",",$params)."){".$body."}");
168
    }
169
}