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 %}