diff --git a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java index 3a9634f5..11688813 100644 --- a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java +++ b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java @@ -308,6 +308,12 @@ public void apply(final Metafix metafix, final Record record, final List record.transformFields(params, k -> map.getOrDefault(k, defaultValue)); } }, + prepend { + public void apply(final Metafix metafix, final Record record, final List params, final Map options) { + final String value = params.get(1); + record.transformFields(params, s -> value + s); + } + }, substring { public void apply(final Metafix metafix, final Record record, final List params, final Map options) { record.transformFields(params, s -> s.substring(getInteger(params, 1), getInteger(params, 2) - 1)); diff --git a/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java b/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java index 49f23cca..869b6dfb 100644 --- a/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java +++ b/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java @@ -625,6 +625,24 @@ public void shouldGetIndexOfSubstring() { ); } + @Test + public void shouldPrependValue() { + MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "prepend(title, 'I love ')" + ), + i -> { + i.startRecord("1"); + i.literal("title", "metafix"); + i.endRecord(); + }, + o -> { + o.get().startRecord("1"); + o.get().literal("title", "I love metafix"); + o.get().endRecord(); + } + ); + } + private void assertThrows(final Class expectedClass, final String expectedMessage, final Executable executable) { final Throwable exception = Assertions.assertThrows(MetafactureException.class, executable).getCause(); Assertions.assertSame(expectedClass, exception.getClass());