From 8893c8119fc991a4bb0c4025c4e309622946a569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20H=C3=BCsges?= Date: Wed, 19 Feb 2020 07:40:02 +0100 Subject: [PATCH 1/2] Add v-text --- src/Compiler.php | 16 +++++++++++++++- tests/VueTextTest.php | 23 +++++++++++++++++++++++ tests/fixtures/vue-html/html.twig | 2 +- tests/fixtures/vue-text/text.twig | 6 ++++++ tests/fixtures/vue-text/text.vue | 19 +++++++++++++++++++ 5 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 tests/VueTextTest.php create mode 100644 tests/fixtures/vue-text/text.twig create mode 100644 tests/fixtures/vue-text/text.vue diff --git a/src/Compiler.php b/src/Compiler.php index 3d589dc..6a4f437 100644 --- a/src/Compiler.php +++ b/src/Compiler.php @@ -150,6 +150,7 @@ public function convertNode(DOMNode $node, int $level = 0): DOMNode $this->handleIf($node); $this->handleFor($node); $this->handleHtml($node); + $this->handleText($node); $this->stripEventHandlers($node); //$this->handleRawHtml($node, $data); $this->handleDefaultSlot($node); @@ -543,9 +544,22 @@ private function handleHtml(DOMElement $node) while ($node->hasChildNodes()) { $node->removeChild($node->firstChild); } - $node->appendChild(new DOMText('{{ ' . $html . '|raw }}')); + $node->appendChild(new DOMText('{{' . $html . '|raw}}')); } + private function handleText(DOMElement $node) + { + if (!$node->hasAttribute('v-text')) { + return; + } + + $text = $node->getAttribute('v-text'); + $node->removeAttribute('v-text'); + while ($node->hasChildNodes()) { + $node->removeChild($node->firstChild); + } + $node->appendChild(new DOMText('{{' . $text . '}}')); + } protected function addDefaultsToVariable($varName, $string): string { diff --git a/tests/VueTextTest.php b/tests/VueTextTest.php new file mode 100644 index 0000000..fddd427 --- /dev/null +++ b/tests/VueTextTest.php @@ -0,0 +1,23 @@ +createCompiler($component); + + $actual = $compiler->convert(); + + $this->assertEqualHtml($expected, $actual); + } +} diff --git a/tests/fixtures/vue-html/html.twig b/tests/fixtures/vue-html/html.twig index 56b6f9b..90b8399 100644 --- a/tests/fixtures/vue-html/html.twig +++ b/tests/fixtures/vue-html/html.twig @@ -1,6 +1,6 @@ {% set rawHtml = 'text' %}
- {{ rawHtml|raw }} + {{rawHtml|raw}}
diff --git a/tests/fixtures/vue-text/text.twig b/tests/fixtures/vue-text/text.twig new file mode 100644 index 0000000..0fefbdf --- /dev/null +++ b/tests/fixtures/vue-text/text.twig @@ -0,0 +1,6 @@ +{% set text = 'follow the white rabbit' %} +
+ + {{text}} + +
diff --git a/tests/fixtures/vue-text/text.vue b/tests/fixtures/vue-text/text.vue new file mode 100644 index 0000000..e489e27 --- /dev/null +++ b/tests/fixtures/vue-text/text.vue @@ -0,0 +1,19 @@ + + + + {% set text = 'follow the white rabbit' %} + + + From 91e51850bd03311f1e112892005d2aed19eb8949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20H=C3=BCsges?= Date: Wed, 19 Feb 2020 07:46:23 +0100 Subject: [PATCH 2/2] Update readme v-text support --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ea5a22..26a9b9c 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Compile vue files to twig templates with PHP |Directive|Implemented| |---------|:---------:| -|v-text|| +|v-text|:white_check_mark:| |v-html|:white_check_mark:| |v-show|:white_check_mark:| |v-if|:white_check_mark:|