99use DOMNode ;
1010use DOMText ;
1111use Exception ;
12- use LibXMLError ;
12+ use Psr \ Log \ LoggerInterface ;
1313
1414class Compiler
1515{
@@ -22,10 +22,13 @@ class Compiler
2222 /** @var DOMText */
2323 protected $ lastCloseIf ;
2424
25- public function __construct (DOMDocument $ document )
25+ /** @var LoggerInterface */
26+ protected $ logger ;
27+
28+ public function __construct (DOMDocument $ document , LoggerInterface $ logger )
2629 {
30+ $ this ->logger = $ logger ;
2731 $ this ->document = $ document ;
28-
2932 $ this ->lastCloseIf = null ;
3033 }
3134
@@ -48,22 +51,18 @@ public function convert(): string
4851
4952 public function convertNode (DOMNode $ node ): DOMNode
5053 {
51- if ($ this -> isTextNode ( $ node ) ) {
54+ if ($ node -> nodeType === XML_TEXT_NODE ) {
5255 return $ node ;
5356 }
5457
5558 if ($ node ->nodeType === XML_ELEMENT_NODE ) {
56- echo "\nElement node found " ;
59+ // echo "\nElement node found";
5760 /** @var DOMElement $node */
5861 $ this ->replaceShowWithIf ($ node );
5962 $ this ->handleIf ($ node );
63+ } elseif ($ node ->nodeType === XML_HTML_DOCUMENT_NODE ) {
64+ $ this ->logger ->warning ("Document node found. " );
6065 }
61- elseif ($ node ->nodeType === XML_HTML_DOCUMENT_NODE ) {
62- echo "\nDocument node found. " ;
63- }
64- // else {
65- // var_dump($node->nodeType);
66- // }
6766
6867 $ this ->stripEventHandlers ($ node );
6968 $ this ->handleFor ($ node );
@@ -80,12 +79,10 @@ public function convertNode(DOMNode $node): DOMNode
8079
8180 public function replaceShowWithIf (DOMElement $ node ): void
8281 {
83-
8482 if ($ node ->hasAttribute ('v-show ' )) {
8583 $ node ->setAttribute ('v-if ' , $ node ->getAttribute ('v-show ' ));
8684 $ node ->removeAttribute ('v-show ' );
8785 }
88-
8986 }
9087
9188 private function handleAttributeBinding (DOMElement $ node )
@@ -94,16 +91,33 @@ private function handleAttributeBinding(DOMElement $node)
9491 foreach (iterator_to_array ($ node ->attributes ) as $ attribute ) {
9592
9693 if (strpos ($ attribute ->name , 'v-bind: ' ) !== 0 && strpos ($ attribute ->name , ': ' ) !== 0 ) {
97- var_dump ("- skip: " . $ attribute ->name );
94+ $ this -> logger -> debug ("- skip: " . $ attribute ->name );
9895 continue ;
9996 }
10097
10198 $ name = substr ($ attribute ->name , 1 );
10299 $ value = $ attribute ->value ;
103- var_dump ('- handle: ' .$ name .' = ' .$ value );
100+ $ this ->logger ->debug ('- handle: ' . $ name . ' = ' . $ value );
101+
102+
103+ switch ($ name ) {
104+ case 'key ' :
105+ // Not necessary in twig
106+ break ;
107+ case 'style ' :
108+ break ;
109+ case 'class ' :
110+ break ;
111+ default :
112+ if ($ value === 'true ' ) {
113+ $ node ->setAttribute ($ name , $ name );
114+ }
115+ $ node ->setAttribute ($ name , $ value );
116+ }
104117
105118 if (is_bool ($ value )) {
106119 if ($ value ) {
120+ $ this ->logger ->debug ('=> setAttribute ' );
107121 $ node ->setAttribute ($ name , $ name );
108122 }
109123 } elseif (is_array ($ value )) {
@@ -125,9 +139,9 @@ private function handleAttributeBinding(DOMElement $node)
125139 }
126140 $ node ->setAttribute ($ name , implode (' ' , $ classes ));
127141 }
128- } else {
129- $ node ->setAttribute ($ name , $ value );
130142 }
143+
144+ $ this ->logger ->debug ('=> remove ' . $ attribute ->name );
131145 $ node ->removeAttribute ($ attribute ->name );
132146 }
133147 }
@@ -154,23 +168,19 @@ private function handleIf(DOMElement $node): void
154168 $ this ->lastCloseIf = $ closeIf ;
155169
156170 $ node ->removeAttribute ('v-if ' );
157- }
158- elseif ($ node ->hasAttribute ('v-else-if ' )) {
171+ } elseif ($ node ->hasAttribute ('v-else-if ' )) {
159172 $ condition = $ node ->getAttribute ('v-else-if ' );
160173
161174 // Replace old endif with else
162- $ this ->lastCloseIf ->textContent = '{% elseif ' . $ condition. ' %} ' ;
175+ $ this ->lastCloseIf ->textContent = '{% elseif ' . $ condition . ' %} ' ;
163176
164177 // Close with new endif
165178 $ closeIf = $ this ->document ->createTextNode ('{% endif %} ' );
166179 $ node ->parentNode ->insertBefore ($ closeIf , $ node ->nextSibling );
167180 $ this ->lastCloseIf = $ closeIf ;
168181
169182 $ node ->removeAttribute ('v-else-if ' );
170- }
171- elseif ($ node ->hasAttribute ('v-else ' )) {
172- echo "\nFound a v-else " ;
173-
183+ } elseif ($ node ->hasAttribute ('v-else ' )) {
174184 // Replace old endif with else
175185 $ this ->lastCloseIf ->textContent = '{% else %} ' ;
176186
0 commit comments