diff --git a/packages/typo3-fractor/config/typo3-8.php b/packages/typo3-fractor/config/typo3-8.php
index 9f72cb54..bc6e484d 100644
--- a/packages/typo3-fractor/config/typo3-8.php
+++ b/packages/typo3-fractor/config/typo3-8.php
@@ -2,6 +2,7 @@
declare(strict_types=1);
+use a9f\Typo3Fractor\TYPO3v8\Fluid\ReplaceCaseDefaultWithDefaultCaseFluidFractor;
use a9f\Typo3Fractor\TYPO3v8\TypoScript\RemoveConfigPrefixLocalAnchorsFractor;
use a9f\Typo3Fractor\TYPO3v8\TypoScript\RemoveConfigRenderCharsetFractor;
use a9f\Typo3Fractor\TYPO3v8\TypoScript\RemoveModNewPageWizOverrideWithExtensionFractor;
@@ -13,6 +14,7 @@
->autoconfigure()
->autowire();
+ $services->set(ReplaceCaseDefaultWithDefaultCaseFluidFractor::class);
$services->set(RemoveConfigPrefixLocalAnchorsFractor::class);
$services->set(RemoveConfigRenderCharsetFractor::class);
$services->set(RemoveModNewPageWizOverrideWithExtensionFractor::class);
diff --git a/packages/typo3-fractor/docs/typo3-fractor-rules.md b/packages/typo3-fractor/docs/typo3-fractor-rules.md
index 6754bd18..b09ad5b3 100644
--- a/packages/typo3-fractor/docs/typo3-fractor-rules.md
+++ b/packages/typo3-fractor/docs/typo3-fractor-rules.md
@@ -1,4 +1,4 @@
-# 69 Rules Overview
+# 70 Rules Overview
## AbstractMessageGetSeverityFluidFractor
@@ -1471,6 +1471,22 @@ Rename key mail to email for MailLinkHandler
+## ReplaceCaseDefaultWithDefaultCaseFluidFractor
+
+Replace f:case with default attribute by f:defaultCase
+
+- class: [`a9f\Typo3Fractor\TYPO3v8\Fluid\ReplaceCaseDefaultWithDefaultCaseFluidFractor`](../rules/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor.php)
+
+```diff
+
+ foo
+- bar
++ bar
+
+```
+
+
+
## TranslationFileYamlFractor
Use key translationFiles instead of translationFile
diff --git a/packages/typo3-fractor/rules-tests/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor/Fixtures/fixture.html.fixture b/packages/typo3-fractor/rules-tests/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor/Fixtures/fixture.html.fixture
new file mode 100644
index 00000000..6cce56f7
--- /dev/null
+++ b/packages/typo3-fractor/rules-tests/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor/Fixtures/fixture.html.fixture
@@ -0,0 +1,9 @@
+
+ foo
+ bar
+
+-----
+
+ foo
+ bar
+
diff --git a/packages/typo3-fractor/rules-tests/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor/ReplaceCaseDefaultWithDefaultCaseFluidFractorTest.php b/packages/typo3-fractor/rules-tests/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor/ReplaceCaseDefaultWithDefaultCaseFluidFractorTest.php
new file mode 100644
index 00000000..f061295d
--- /dev/null
+++ b/packages/typo3-fractor/rules-tests/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor/ReplaceCaseDefaultWithDefaultCaseFluidFractorTest.php
@@ -0,0 +1,27 @@
+doTestFile($filePath);
+ }
+
+ public static function provideData(): \Iterator
+ {
+ return self::yieldFilesFromDirectory(__DIR__ . '/Fixtures', '*.html.fixture');
+ }
+
+ public function provideConfigFilePath(): string
+ {
+ return __DIR__ . '/config/fractor.php';
+ }
+}
diff --git a/packages/typo3-fractor/rules-tests/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor/config/fractor.php b/packages/typo3-fractor/rules-tests/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor/config/fractor.php
new file mode 100644
index 00000000..26ed365a
--- /dev/null
+++ b/packages/typo3-fractor/rules-tests/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor/config/fractor.php
@@ -0,0 +1,9 @@
+withRules([ReplaceCaseDefaultWithDefaultCaseFluidFractor::class]);
diff --git a/packages/typo3-fractor/rules/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor.php b/packages/typo3-fractor/rules/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor.php
new file mode 100644
index 00000000..5b55ac34
--- /dev/null
+++ b/packages/typo3-fractor/rules/TYPO3v8/Fluid/ReplaceCaseDefaultWithDefaultCaseFluidFractor.php
@@ -0,0 +1,49 @@
+
+ foo
+ bar
+
+CODE_SAMPLE
+ ,
+ <<<'CODE_SAMPLE'
+
+ foo
+ bar
+
+CODE_SAMPLE
+ )]);
+ }
+
+ public function refactor(string $fluid): string
+ {
+ // Replace opening + closing tag with content
+ $fluid = Strings::replace(
+ $fluid,
+ '#(.*?)#si',
+ '$2'
+ );
+
+ // Replace self-closing tag
+ return Strings::replace($fluid, '##si', '');
+ }
+}