![JAR search and dependency download from the Maven repository](/logo.png)
net.java.textilej.parser.markup.textile.phrase.SimpleTextilePhraseModifier Maven / Gradle / Ivy
The newest version!
package net.java.textilej.parser.markup.textile.phrase;
import net.java.textilej.parser.Attributes;
import net.java.textilej.parser.DocumentBuilder.SpanType;
import net.java.textilej.parser.markup.PatternBasedElement;
import net.java.textilej.parser.markup.PatternBasedElementProcessor;
import net.java.textilej.parser.markup.textile.Textile;
public class SimpleTextilePhraseModifier extends PatternBasedElement {
protected static final int CONTENT_GROUP = Textile.ATTRIBUTES_GROUP_COUNT+1;
protected static final int ATTRIBUTES_OFFSET = 1;
private static class SimplePhraseModifierProcessor extends PatternBasedElementProcessor {
private final SpanType spanType;
private final boolean nesting;
public SimplePhraseModifierProcessor(SpanType spanType, boolean nesting) {
this.spanType = spanType;
this.nesting = nesting;
}
@Override
public void emit() {
Attributes attributes = new Attributes();
configureAttributes(this, attributes);
getBuilder().beginSpan(spanType, attributes);
if (nesting) {
getDialect().emitMarkupLine(parser, state, state.getLineCharacterOffset() + getStart(this),
getContent(this), 0);
} else {
getDialect().emitMarkupText(parser, state, getContent(this));
}
getBuilder().endSpan();
}
}
private String delimiter;
private SpanType spanType;
private final boolean nesting;
public SimpleTextilePhraseModifier(String delimiter, SpanType spanType, boolean nesting) {
this.delimiter = delimiter;
this.spanType = spanType;
this.nesting = nesting;
}
@Override
protected String getPattern(int groupOffset) {
String quotedDelimiter = quoteLite(getDelimiter());
return
quotedDelimiter + "(?!"+quotedDelimiter+")"+
Textile.REGEX_ATTRIBUTES +
"([^\\s"+quotedDelimiter+"]+|\\S[^"+quotedDelimiter+"]*[^\\s"+quotedDelimiter+"])" + // content
quotedDelimiter;
}
private String quoteLite(String literal) {
StringBuilder buf = new StringBuilder(literal.length()*2);
for (int x = 0;x
© 2015 - 2025 Weber Informatics LLC | Privacy Policy