diff --git a/src/ComponentTokenParser.php b/src/ComponentTokenParser.php index 0c48bcc..f33e6c6 100644 --- a/src/ComponentTokenParser.php +++ b/src/ComponentTokenParser.php @@ -62,11 +62,22 @@ protected function parseArguments() public function decideBlockEnd(Token $token): bool { - return $token->test('end' . $this->tag); + return $token->test('end' . $this->toCamelCase($this->tag)); + } + + public function toCamelCase(string $value): string + { + $value = str_replace(['-', '_'], ' ', $value); + + $value = ucwords($value); + + $value = str_replace(' ', '', $value); + + return lcfirst($value); } public function getTag(): string { - return $this->tag; + return $this->toCamelCase($this->tag); } } diff --git a/tests/ComponentTest.php b/tests/ComponentTest.php index bcd0d46..305f6b4 100644 --- a/tests/ComponentTest.php +++ b/tests/ComponentTest.php @@ -19,6 +19,11 @@ public function render_simple_button_component() $html = $twig->render('index-button.twig'); - $this->assertEquals("\n", $html); + $this->assertEquals(<< test + + + + HTML, $html); } } diff --git a/tests/templates/components/simple-button.twig b/tests/templates/components/simple-button.twig new file mode 100644 index 0000000..4b5f2a6 --- /dev/null +++ b/tests/templates/components/simple-button.twig @@ -0,0 +1 @@ + diff --git a/tests/templates/components/simple_btn.twig b/tests/templates/components/simple_btn.twig new file mode 100644 index 0000000..4b5f2a6 --- /dev/null +++ b/tests/templates/components/simple_btn.twig @@ -0,0 +1 @@ + diff --git a/tests/templates/index-button.twig b/tests/templates/index-button.twig index 02a7909..e6d00d4 100644 --- a/tests/templates/index-button.twig +++ b/tests/templates/index-button.twig @@ -1 +1,3 @@ {% button with {class:'bg-blue-600'} %} test {% endbutton %} +{% simpleButton with {class:'bg-blue-600'} %} test {% endsimpleButton %} +{% simpleBtn with {class:'bg-blue-600'} %} test {% endsimpleBtn %}