
fitnesse.wikitext.parser.WikiBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of fitnesse Show documentation
Show all versions of fitnesse Show documentation
The fully integrated standalone wiki, and acceptance testing framework.
package fitnesse.wikitext.parser;
import java.util.ArrayList;
import java.util.Collection;
public class WikiBuilder implements Translation {
private interface WikiStringBuilder {
void build(Translator translator, Symbol symbol, StringBuilder wikiString);
}
private Collection builders = new ArrayList<>();
public WikiBuilder content() {
builders.add(new WikiStringBuilder() {
@Override
public void build(Translator translator, Symbol symbol, StringBuilder wikiString) {
wikiString.append(symbol.getContent());
}
});
return this;
}
public WikiBuilder child(final int child) {
builders.add(new WikiStringBuilder() {
@Override
public void build(Translator translator, Symbol symbol, StringBuilder wikiString) {
wikiString.append(translator.translate(symbol.childAt(child)));
}
});
return this;
}
public WikiBuilder children(final String separator) {
builders.add(new WikiStringBuilder() {
@Override
public void build(Translator translator, Symbol symbol, StringBuilder wikiString) {
int count = 0;
for (Symbol child: symbol.getChildren()) {
if (count > 0) wikiString.append(separator);
wikiString.append(translator.translate(child));
count++;
}
}
});
return this;
}
public WikiBuilder text(final String text) {
builders.add(new WikiStringBuilder() {
@Override
public void build(Translator translator, Symbol symbol, StringBuilder wikiString) {
wikiString.append(text);
}
});
return this;
}
public WikiBuilder property(final String key, final String value, final String text) {
builders.add(new WikiStringBuilder() {
@Override
public void build(Translator translator, Symbol symbol, StringBuilder wikiString) {
if (symbol.getProperty(key, "*none*").equals(value)) wikiString.append(text);
}
});
return this;
}
public WikiBuilder property(final String key) {
builders.add(new WikiStringBuilder() {
@Override
public void build(Translator translator, Symbol symbol, StringBuilder wikiString) {
if (symbol.hasProperty(key)) wikiString.append(symbol.getProperty(key));
}
});
return this;
}
@Override
public String toTarget(Translator translator, Symbol symbol) {
StringBuilder result = new StringBuilder();
for (WikiStringBuilder builder: builders) {
builder.build(translator, symbol, result);
}
return result.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy