public class ListPostProcessor implements PostProcessor<List<?>> { @SuppressWarnings("unchecked") public void process(List<?> t) { final PostProcessor p = ...; for( Object o : t ) if(p!=null) p.process(o); } }
public synchronized PostProcessor getPostProcessor(String name) { for (PostProcessor pp : postProcessors) { if (pp.getName().equalsIgnoreCase(name)) { return pp; } } return null; }
String line = iterator.next(); String trimmedLine = line.trim(); if (!PostProcessor.isBlockDeclaration(trimmedLine)) { processed.append(line); if (iterator.hasNext()) { String name = PostProcessor.getProcessorName(trimmedLine); String[] attributes = PostProcessor.getProcessorAttributes(trimmedLine); PostProcessor postProcessor = getPostProcessor(name); if (postProcessor == null) { String block = PostProcessor.getBlockContent(iterator); processed.append(postProcessor.process(name2, block, attributes)); if (iterator.hasNext()) { processed.append("\n");
@Test public void testContentExtractionWithSingleLineBlock() { List<String> lines = Arrays.asList( "line 1", "line 2" ); assertThat(PostProcessor.getBlockContent(lines.iterator()), containsString("line 1")); assertThat(PostProcessor.getBlockContent(lines.iterator()), not(containsString("line 2"))); }
@Test public void testBlockDeclaration() { assertThat(PostProcessor.isBlockDeclaration("[foo]"), equalTo(true)); assertThat(PostProcessor.isBlockDeclaration("[foo,a,b,c]"), equalTo(true)); assertThat(PostProcessor.isBlockDeclaration("[foo ]"), equalTo(true)); assertThat(PostProcessor.isBlockDeclaration("[ foo ]"), equalTo(true)); assertThat(PostProcessor.isBlockDeclaration("foo"), equalTo(false)); assertThat(PostProcessor.isBlockDeclaration(""), equalTo(false)); assertThat(PostProcessor.isBlockDeclaration("[]"), equalTo(false)); assertThat(PostProcessor.isBlockDeclaration("[ ]"), equalTo(true)); assertThat(PostProcessor.isBlockDeclaration("[X]"), equalTo(true)); }
@Test public void testProcessorAttributeExtraction() { assertThat(PostProcessor.getProcessorAttributes("[foo]").length, equalTo(0)); // First parameter empty assertThat(PostProcessor.getProcessorAttributes("[foo,]").length, equalTo(1)); assertThat(PostProcessor.getProcessorAttributes("[foo,]")[0], equalTo("")); assertThat(PostProcessor.getProcessorAttributes("[foo,,,]").length, equalTo(0)); assertThat(PostProcessor.getProcessorAttributes("[foo, a,b,c ]")[0], equalTo("a")); assertThat(PostProcessor.getProcessorAttributes("[foo,a,b,c ]")[1], equalTo("b")); assertThat(PostProcessor.getProcessorAttributes("[foo, a,b,c ]")[2], equalTo("c")); }
@Test public void testProcessorNameExtraction() { assertThat(PostProcessor.getProcessorName("[foo]"), equalTo("foo")); assertThat(PostProcessor.getProcessorName("[foo ]"), equalTo("foo")); assertThat(PostProcessor.getProcessorName("[ foo]"), equalTo("foo")); assertThat(PostProcessor.getProcessorName("[ foo ]"), equalTo("foo")); assertThat(PostProcessor.getProcessorName("[foo,a,b,c]"), equalTo("foo")); assertThat(PostProcessor.getProcessorName("[foo, a,b,c]"), equalTo("foo")); }
@Test public void testContentExtractionWithBlock() { List<String> lines = Arrays.asList( "----", "line 1", "line 2", "----", "line 3" ); assertThat(PostProcessor.getBlockContent(lines.iterator()), containsString("line 1")); assertThat(PostProcessor.getBlockContent(lines.iterator()), containsString("line 2")); assertThat(PostProcessor.getBlockContent(lines.iterator()), not(containsString("line 3"))); assertThat(PostProcessor.getBlockContent(lines.iterator()), not(containsString("----"))); }
@Test public void testExtractionWithNestedBlocks() { List<String> lines = Arrays.asList( "----", "line 1", "line 2", "[source]", "\\----", "some source code", "\\----", "after", "----", "line 3" ); assertThat(PostProcessor.getBlockContent(lines.iterator()), containsString("line 1")); assertThat(PostProcessor.getBlockContent(lines.iterator()), containsString("line 2")); assertThat(PostProcessor.getBlockContent(lines.iterator()), containsString("[source]")); assertThat(PostProcessor.getBlockContent(lines.iterator()), containsString("some source code")); assertThat(PostProcessor.getBlockContent(lines.iterator()), containsString("after")); assertThat(PostProcessor.getBlockContent(lines.iterator()), not(containsString("line 3"))); }
public synchronized BaseProcessor registerPostProcessor(PostProcessor postProcessor) { if (getPostProcessor(postProcessor.getName()) != null) { throw new IllegalArgumentException("Post-processor with name '" + postProcessor.getName() + "' is already " + "registered."); } postProcessors.add(postProcessor); return this; }