Markwon-syntax
This is a simple module to add syntax-highlight functionality to your markdown rendered with Markwon library. It is based on Prism4j so lead there to understand how to configure Prism4j instance.
First, we need to obtain an instance of Prism4jSyntaxHighlight which implements Markwon's SyntaxHighlight:
final SyntaxHighlight highlight =
Prism4jSyntaxHighlight.create(Prism4j, Prism4jTheme);
we also can obtain an instance of Prism4jSyntaxHighlight that has a fallback option (if a language is not defined in Prism4j instance, fallback language can be used):
final SyntaxHighlight highlight =
Prism4jSyntaxHighlight.create(Prism4j, Prism4jTheme, String);
Generally obtaining a Prism4j instance is pretty easy:
final Prism4j prism4j = new Prism4j(new GrammarLocatorDef());
Where GrammarLocatorDef is a generated grammar locator (if you use prism4j-bundler annotation processor)
Prism4jTheme is a specific type that is defined in this module (prism4j doesn't know anything about rendering). It has 2 implementations:
Prism4jThemeDefaultPrism4jThemeDarkula
Both of them can be obtained via factory method create:
Prism4jThemeDefault.create()Prism4jThemeDarkula.create()
But of cause nothing is stopping you from defining your own theme:
public interface Prism4jTheme {
@ColorInt
int background();
@ColorInt
int textColor();
void apply(
@NonNull String language,
@NonNull Prism4j.Syntax syntax,
@NonNull SpannableStringBuilder builder,
int start,
int end
);
}
You can extend
Prism4jThemeBasewhich has some helper methods

