com.technophobia.substeps.glossary.HTMLSubstepsPublisher Maven / Gradle / Ivy
/*
* Copyright Technophobia Ltd 2012
*
* This file is part of Substeps.
*
* Substeps is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Substeps is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Substeps. If not, see .
*/
package com.technophobia.substeps.glossary;
import org.apache.commons.lang.StringEscapeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* @author ian
*/
public class HTMLSubstepsPublisher extends FileBasedGlossaryPublisher implements GlossaryPublisher {
private static final Logger log = LoggerFactory.getLogger(HTMLSubstepsPublisher.class);
@Override
public String getDefaultFileName() {
return "stepimplementations.html";
}
/**
* @param sectionSorted
*/
@Override
public String buildFileContents(final Map> sectionSorted) {
final StringBuilder buf = new StringBuilder();
buf.append(" \nKeyword Example Description \n");
final Set>> entrySet = sectionSorted.entrySet();
for (final Entry> e : entrySet) {
buf.append(String.format(TABLE_ROW_SECTION_FORMAT, e.getKey())).append("\n");
buildStepTagRows(buf, e.getValue());
}
buf.append("
");
return buf.toString();
}
private void buildStepTagRows(final StringBuilder buf, final Collection infos) {
for (final StepDescriptor info : infos) {
log.debug("info non escaped: " + info.getExpression() + "\n\tescaped:\n"
+ StringEscapeUtils.escapeHtml(info.getExpression()));
buf.append(
String.format(TABLE_ROW_FORMAT,
StringEscapeUtils.escapeHtml(info.getExpression()), info.getExample(),
StringEscapeUtils.escapeHtml(info.getDescription()))).append("\n");
}
}
private static final String TABLE_ROW_SECTION_FORMAT = "%s ";
private static final String TABLE_ROW_FORMAT = "%s %s %s ";
}