$result = Text::clean('{:a}, 3, {:b}'); expect($result)->toBe('3'); $result = Text::clean('{:a}, {:b}, {:c}'); expect($result)->toBe(''); }); it("cleans placeholder and adjacent `'and'`", function () { $result = Text::clean('{:a} and 2 and 3'); expect($result)->toBe('2 and 3'); $result = Text::clean('2 and {:a} and 3'); expect($result)->toBe('2 and 3'); $result = Text::clean('{:a} and {:b} and 3'); expect($result)->toBe('3'); $result = Text::clean('{:a} and 3 and {:b}'); expect($result)->toBe('3'); $result = Text::clean('{:a} and {:b} and {:c}'); expect($result)->toBe(''); }); it("cleans placeholder and adjacent comma and `'and'`", function () { $result = Text::clean('{:a}, 2 and 3'); expect($result)->toBe('2 and 3'); $result = Text::clean('{:a}, 2 and {:c}'); expect($result)->toBe('2'); }); it("cleans placeholder with special chars", function () { $string = '${a} ${b}'; $expected = ''; $result = Text::clean($string, ['before' => '${', 'after' => '}']); expect($result)->toBe($expected); }); }); });