
* Add `html-parser-api` and `html-parser-impl` modules * Add `HtmlEmptyTagReplacement` * Implement Appendable and CharSequence in SpannableBuilder * Renamed library modules to reflect maven artifact names * Rename `markwon-syntax` to `markwon-syntax-highlight` * Add HtmlRenderer asbtraction * Add CssInlineStyleParser * Fix Theme#listItemColor and OL * Fix task list block parser to revert parsing state when line is not matching * Defined test format files * image-loader add datauri parser * image-loader add support for inline data uri image references * Add travis configuration * Fix image with width greater than canvas scaled * Fix blockquote span * Dealing with white spaces at the end of a document * image-loader add SchemeHandler abstraction * Add sample-latex-math module
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:
Prism4jThemeDefault
Prism4jThemeDarkula
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
Prism4jThemeBase
which has some helper methods