From 9dd8d9bc3e0361092dae4be1b547c39ad69780af Mon Sep 17 00:00:00 2001 From: Mauro Cassani Date: Tue, 11 Jul 2023 13:55:12 +0200 Subject: [PATCH] Added SQUARE_SPRINTF type/filter --- src/Enum/CTypeEnum.php | 1 + src/Filters/SquareSprintf.php | 42 ++++++++++++++++++++++++++++++ src/MateCatFilter.php | 2 ++ src/MyMemoryFilter.php | 3 +++ tests/MateCatSubFilteringTest.php | 10 +++++++ tests/MyMemorySubFilteringTest.php | 9 +++++++ 6 files changed, 67 insertions(+) create mode 100644 src/Filters/SquareSprintf.php diff --git a/src/Enum/CTypeEnum.php b/src/Enum/CTypeEnum.php index 12c2517..37e070f 100644 --- a/src/Enum/CTypeEnum.php +++ b/src/Enum/CTypeEnum.php @@ -18,4 +18,5 @@ class CTypeEnum { const DOUBLE_SQUARE_BRACKETS = 'x-double-square-brackets'; const DOLLAR_CURLY_BRACKETS = 'x-dollar-curly-brackets'; const DOUBLE_UNDERSCORE = 'x-double-underscore'; + const SQUARE_SPRINTF = 'x-square-sprintf'; } \ No newline at end of file diff --git a/src/Filters/SquareSprintf.php b/src/Filters/SquareSprintf.php new file mode 100644 index 0000000..feb7956 --- /dev/null +++ b/src/Filters/SquareSprintf.php @@ -0,0 +1,42 @@ + $percentSnailVariable ) { + + $segment = preg_replace( + '/' . preg_quote( $percentSnailVariable[ 0 ], '/' ) . '/', + '', + $segment, + 1 + ); + } + + return $segment; + } +} \ No newline at end of file diff --git a/src/MateCatFilter.php b/src/MateCatFilter.php index cff6819..f42713c 100644 --- a/src/MateCatFilter.php +++ b/src/MateCatFilter.php @@ -36,6 +36,7 @@ use Matecat\SubFiltering\Filters\SpacesToNBSPForView; use Matecat\SubFiltering\Filters\SplitPlaceholder; use Matecat\SubFiltering\Filters\SprintfToPH; +use Matecat\SubFiltering\Filters\SquareSprintf; use Matecat\SubFiltering\Filters\StandardPHToMateCatCustomPH; use Matecat\SubFiltering\Filters\SubFilteredPhToHtml; use Matecat\SubFiltering\Filters\TwigToPh; @@ -167,6 +168,7 @@ public function fromLayer0ToLayer1( $segment ) { $channel->addLast( new PercentSnail() ); $channel->addLast( new PercentNumberSnail() ); $channel->addLast( new Percentages() ); + $channel->addLast( new SquareSprintf() ); $channel->addLast( new SprintfToPH() ); $channel->addLast( new RestoreXliffTagsContent() ); $channel->addLast( new RestorePlaceHoldersToXLIFFLtGt() ); diff --git a/src/MyMemoryFilter.php b/src/MyMemoryFilter.php index bc544fd..72e84ab 100644 --- a/src/MyMemoryFilter.php +++ b/src/MyMemoryFilter.php @@ -31,6 +31,7 @@ use Matecat\SubFiltering\Filters\Snails; use Matecat\SubFiltering\Filters\SplitPlaceholder; use Matecat\SubFiltering\Filters\SprintfToPH; +use Matecat\SubFiltering\Filters\SquareSprintf; use Matecat\SubFiltering\Filters\StandardPHToMateCatCustomPH; use Matecat\SubFiltering\Filters\SubFilteredPhToHtml; use Matecat\SubFiltering\Filters\TwigToPh; @@ -76,9 +77,11 @@ public function fromLayer0ToLayer1( $segment, $cid = null ) { $channel->addLast( new DoubleSquareBrackets() ); //$channel->addLast( new DoubleUnderscore() ); $channel->addLast( new DollarCurlyBrackets() ); + $channel->addLast( new PercentSnail() ); $channel->addLast( new PercentNumberSnail() ); $channel->addLast( new Percentages() ); + $channel->addLast( new SquareSprintf() ); $channel->addLast( new SprintfToPH() ); $channel->addLast( new RestoreXliffTagsContent() ); $channel->addLast( new RestorePlaceHoldersToXLIFFLtGt() ); diff --git a/tests/MateCatSubFilteringTest.php b/tests/MateCatSubFilteringTest.php index 1a4ad54..1f0e449 100644 --- a/tests/MateCatSubFilteringTest.php +++ b/tests/MateCatSubFilteringTest.php @@ -951,4 +951,14 @@ public function testWithDollarCurlyBrackets() { $this->assertEquals( $segment_from_UI, $filter->fromLayer0ToLayer1( $db_segment ) ); } + public function testWithSquareSprintf() { + $filter = $this->getFilterInstance(); + + $db_segment = 'This string contains [%s]'; + $segment_from_UI = 'This string contains '; + + $this->assertEquals( $db_segment, $filter->fromLayer1ToLayer0( $segment_from_UI ) ); + $this->assertEquals( $segment_from_UI, $filter->fromLayer0ToLayer1( $db_segment ) ); + } + } diff --git a/tests/MyMemorySubFilteringTest.php b/tests/MyMemorySubFilteringTest.php index f075810..b90a7c3 100644 --- a/tests/MyMemorySubFilteringTest.php +++ b/tests/MyMemorySubFilteringTest.php @@ -205,4 +205,13 @@ public function testWithDollarCurlyBrackets() $this->assertEquals( $segment_from_UI, $filter->fromLayer0ToLayer1( $db_segment ) ); } + public function testWithSquareSprintf() { + $filter = $this->getFilterInstance(); + + $db_segment = 'This string contains [%s]'; + $segment_from_UI = 'This string contains '; + + $this->assertEquals( $db_segment, $filter->fromLayer1ToLayer0( $segment_from_UI ) ); + $this->assertEquals( $segment_from_UI, $filter->fromLayer0ToLayer1( $db_segment ) ); + } } \ No newline at end of file