* 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
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Markwon-syntax
 | 
						|
 | 
						|
This is a simple module to add **syntax-highlight** functionality to your markdown rendered with Markwon library. It is based on [Prism4j](https://github.com/noties/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`:
 | 
						|
 | 
						|
```java
 | 
						|
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):
 | 
						|
 | 
						|
```java
 | 
						|
final SyntaxHighlight highlight = 
 | 
						|
    Prism4jSyntaxHighlight.create(Prism4j, Prism4jTheme, String);
 | 
						|
```
 | 
						|
 | 
						|
Generally obtaining a `Prism4j` instance is pretty easy:
 | 
						|
 | 
						|
```java
 | 
						|
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:
 | 
						|
 | 
						|
```java
 | 
						|
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
 |