diff --git a/src/bundle/Resources/config/services.yaml b/src/bundle/Resources/config/services.yaml index 82138cc..686e458 100644 --- a/src/bundle/Resources/config/services.yaml +++ b/src/bundle/Resources/config/services.yaml @@ -9,6 +9,8 @@ services: tags: [ ibexa.automated_translation.field_encoder ] # field encoder + Ibexa\AutomatedTranslation\Encoder\Field\TextBlockFieldEncoder: ~ + Ibexa\AutomatedTranslation\Encoder\Field\TextLineFieldEncoder: ~ Ibexa\AutomatedTranslation\Encoder\Field\RichTextFieldEncoder: diff --git a/src/lib/Encoder/Field/TextBlockFieldEncoder.php b/src/lib/Encoder/Field/TextBlockFieldEncoder.php new file mode 100644 index 0000000..cce0449 --- /dev/null +++ b/src/lib/Encoder/Field/TextBlockFieldEncoder.php @@ -0,0 +1,44 @@ +value instanceof TextBlockValue; + } + + public function canDecode(string $type): bool + { + return TextBlockValue::class === $type; + } + + public function encode(Field $field): string + { + return (string) $field->value; + } + + public function decode(string $value, $previousFieldValue): Value + { + $value = trim($value); + + if (strlen($value) === 0) { + throw new EmptyTranslatedFieldException(); + } + + return new TextBlockValue($value); + } +} diff --git a/tests/lib/Encoder/Field/TextBlockFieldEncoderTest.php b/tests/lib/Encoder/Field/TextBlockFieldEncoderTest.php new file mode 100644 index 0000000..ed837fd --- /dev/null +++ b/tests/lib/Encoder/Field/TextBlockFieldEncoderTest.php @@ -0,0 +1,46 @@ + 'field_1_TextBlock', + 'value' => new TextBlock\Value(self::TEXT_BLOCK_VALUE), + ]); + + $subject = new TextBlockFieldEncoder(); + $result = $subject->encode($field); + + $this->assertEquals(self::TEXT_BLOCK_VALUE, $result); + } + + public function testDecode(): void + { + $field = new Field([ + 'fieldDefIdentifier' => 'field_1_TextBlock', + 'value' => new TextBlock\Value(self::TEXT_BLOCK_VALUE), + ]); + + $subject = new TextBlockFieldEncoder(); + $result = $subject->decode(self::TEXT_BLOCK_VALUE, $field->value); + + $this->assertInstanceOf(TextBlock\Value::class, $result); + $this->assertEquals(new TextBlock\Value(self::TEXT_BLOCK_VALUE), $result); + } +}