TransformingStoryParser.java

  1. package org.jbehave.core.parsers;

  2. import org.jbehave.core.model.Story;

  3. public class TransformingStoryParser implements StoryParser {

  4.     private final StoryParser delegate;
  5.     private StoryTransformer[] transformers;

  6.     public TransformingStoryParser(StoryParser delegate, StoryTransformer... transformers) {
  7.         this.delegate = delegate;
  8.         this.transformers = transformers;
  9.     }

  10.     @Override
  11.     public Story parseStory(String storyAsText) {
  12.         return delegate.parseStory(transform(storyAsText));
  13.     }

  14.     @Override
  15.     public Story parseStory(String storyAsText, String storyPath) {
  16.         return delegate.parseStory(transform(storyAsText), storyPath);
  17.     }

  18.     private String transform(String storyAsText) {
  19.         String transformed = storyAsText;
  20.         for (StoryTransformer transformer : transformers) {
  21.             transformed = transformer.transform(transformed);
  22.         }
  23.         return transformed;
  24.     }

  25. }