diff --git a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java index de08a724..3a9634f5 100644 --- a/metafix/src/main/java/org/metafacture/metafix/FixMethod.java +++ b/metafix/src/main/java/org/metafacture/metafix/FixMethod.java @@ -281,6 +281,12 @@ public void apply(final Metafix metafix, final Record record, final List }); } }, + index { + public void apply(final Metafix metafix, final Record record, final List params, final Map options) { + final String search = params.get(1); + record.transformFields(params, s -> String.valueOf(s.indexOf(search))); // TODO: multiple + } + }, lookup { public void apply(final Metafix metafix, final Record record, final List params, final Map options) { final Map map; diff --git a/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java b/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java index 040bbd99..49f23cca 100644 --- a/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java +++ b/metafix/src/test/java/org/metafacture/metafix/MetafixMethodTest.java @@ -607,6 +607,24 @@ public void shouldFilterArrayValuesInverted() { ); } + @Test + public void shouldGetIndexOfSubstring() { + MetafixTestHelpers.assertFix(streamReceiver, Arrays.asList( + "index(title, 't')" + ), + i -> { + i.startRecord("1"); + i.literal("title", "metafix"); + i.endRecord(); + }, + o -> { + o.get().startRecord("1"); + o.get().literal("title", "2"); + 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());