org.pkl.thirdparty.commonmark.internal.inline.BackslashInlineParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pkl-tools Show documentation
Show all versions of pkl-tools Show documentation
Fat Jar containing pkl-cli, pkl-codegen-java, pkl-codegen-kotlin, pkl-config-java, pkl-core, pkl-doc, and their shaded third-party dependencies.
package org.pkl.thirdparty.commonmark.internal.inline;
import org.pkl.thirdparty.commonmark.internal.util.Escaping;
import org.pkl.thirdparty.commonmark.node.HardLineBreak;
import org.pkl.thirdparty.commonmark.node.Text;
import org.pkl.thirdparty.commonmark.parser.beta.*;
import java.util.Set;
import java.util.regex.Pattern;
/**
* Parse a backslash-escaped special character, adding either the escaped character, a hard line break
* (if the backslash is followed by a newline), or a literal backslash to the block's children.
*/
public class BackslashInlineParser implements InlineContentParser {
private static final Pattern ESCAPABLE = Pattern.compile('^' + Escaping.ESCAPABLE);
@Override
public ParsedInline tryParse(InlineParserState inlineParserState) {
Scanner scanner = inlineParserState.scanner();
// Backslash
scanner.next();
char next = scanner.peek();
if (next == '\n') {
scanner.next();
return ParsedInline.of(new HardLineBreak(), scanner.position());
} else if (ESCAPABLE.matcher(String.valueOf(next)).matches()) {
scanner.next();
return ParsedInline.of(new Text(String.valueOf(next)), scanner.position());
} else {
return ParsedInline.of(new Text("\\"), scanner.position());
}
}
public static class Factory implements InlineContentParserFactory {
@Override
public Set getTriggerCharacters() {
return Set.of('\\');
}
@Override
public InlineContentParser create() {
return new BackslashInlineParser();
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy