package org.jbehave.core.reporters;
import java.util.Properties;
import org.jbehave.core.io.StoryNameResolver;
import org.jbehave.core.io.UnderscoredToCapitalized;
/**
* <p>
* Freemarker-based {@link ViewGenerator}, which uses the configured FTL
* templates for the views. The default view properties are overridable via the
* method {@link Properties} parameter. To override, specify the path to the new
* template under the appropriate key:
* <p>
* The view generator provides the following default properties:
*
* <pre>
* "views": "ftl/jbehave-views.ftl"
* "maps": "ftl/jbehave-maps.ftl"
* "navigator": "ftl/jbehave-navigator.ftl"
* "reports": "ftl/jbehave-reports.ftl"
* "decorated": "ftl/jbehave-report-decorated.ftl"
* "nonDecorated": "ftl/jbehave-report-non-decorated.ftl"
* "decorateNonHtml": "true"
* "defaultFormats": "stats"
* "viewDirectory": "view"
* </pre>
*
* </p>
* <p>
* The view generator can also specify the {@link StoryNameResolver} (defaulting
* to {@link UnderscoredToCapitalized}) and the class whose ClassLoader
* Freemarker uses to load the templates from (defaulting to
* {@link FreemarkerProcessor}).
* </p>
*
* @author Mauro Talevi
*/
public class FreemarkerViewGenerator extends TemplateableViewGenerator {
public FreemarkerViewGenerator() {
this(FreemarkerViewGenerator.class);
}
public FreemarkerViewGenerator(StoryNameResolver nameResolver) {
super(nameResolver, new FreemarkerProcessor());
}
public FreemarkerViewGenerator(Class<?> templateLoadingFrom) {
this(new UnderscoredToCapitalized(), templateLoadingFrom);
}
public FreemarkerViewGenerator(StoryNameResolver nameResolver, Class<?> templateLoadingFrom) {
super(nameResolver, new FreemarkerProcessor(templateLoadingFrom));
}
public Properties defaultViewProperties() {
Properties properties = new Properties(super.defaultViewProperties());
properties.setProperty("views", "ftl/jbehave-views.ftl");
properties.setProperty("maps", "ftl/jbehave-maps.ftl");
properties.setProperty("navigator", "ftl/jbehave-navigator.ftl");
properties.setProperty("reports", "ftl/jbehave-reports.ftl");
properties.setProperty("decorated", "ftl/jbehave-report-decorated.ftl");
properties.setProperty("nonDecorated", "ftl/jbehave-report-non-decorated.ftl");
return properties;
}
}