Expose enabled block types in CorePlugin
This commit is contained in:
		
							parent
							
								
									ab83dad618
								
							
						
					
					
						commit
						a135e07f16
					
				| @ -6,6 +6,7 @@ | ||||
| * `HtmlEmptyTagReplacement` now is configurable by `HtmlPlugin`, `iframe` handling ([#235]) | ||||
| * `AsyncDrawableLoader` now uses `TextView` width without padding instead of width of canvas | ||||
| * Support for images inside table cells (`ext-tables` module) | ||||
| * expose `enabledBlockTypes` in `CorePlugin` | ||||
| 
 | ||||
| [#235]: https://github.com/noties/Markwon/issues/235 | ||||
| 
 | ||||
|  | ||||
| @ -9,6 +9,7 @@ import androidx.annotation.NonNull; | ||||
| import androidx.annotation.Nullable; | ||||
| import androidx.annotation.VisibleForTesting; | ||||
| 
 | ||||
| import org.commonmark.node.Block; | ||||
| import org.commonmark.node.BlockQuote; | ||||
| import org.commonmark.node.BulletList; | ||||
| import org.commonmark.node.Code; | ||||
| @ -16,6 +17,7 @@ import org.commonmark.node.Emphasis; | ||||
| import org.commonmark.node.FencedCodeBlock; | ||||
| import org.commonmark.node.HardLineBreak; | ||||
| import org.commonmark.node.Heading; | ||||
| import org.commonmark.node.HtmlBlock; | ||||
| import org.commonmark.node.Image; | ||||
| import org.commonmark.node.IndentedCodeBlock; | ||||
| import org.commonmark.node.Link; | ||||
| @ -30,7 +32,10 @@ import org.commonmark.node.Text; | ||||
| import org.commonmark.node.ThematicBreak; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.HashSet; | ||||
| import java.util.List; | ||||
| import java.util.Set; | ||||
| 
 | ||||
| import io.noties.markwon.AbstractMarkwonPlugin; | ||||
| import io.noties.markwon.MarkwonConfiguration; | ||||
| @ -90,6 +95,23 @@ public class CorePlugin extends AbstractMarkwonPlugin { | ||||
|         return new CorePlugin(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return a set with enabled by default block types | ||||
|      * @since $nap; | ||||
|      */ | ||||
|     @NonNull | ||||
|     public static Set<Class<? extends Block>> enabledBlockTypes() { | ||||
|         return new HashSet<>(Arrays.asList( | ||||
|                 BlockQuote.class, | ||||
|                 Heading.class, | ||||
|                 FencedCodeBlock.class, | ||||
|                 HtmlBlock.class, | ||||
|                 ThematicBreak.class, | ||||
|                 ListBlock.class, | ||||
|                 IndentedCodeBlock.class | ||||
|         )); | ||||
|     } | ||||
| 
 | ||||
|     // @since 4.0.0 | ||||
|     private final List<OnTextAddedListener> onTextAddedListeners = new ArrayList<>(0); | ||||
| 
 | ||||
|  | ||||
| @ -8,8 +8,14 @@ import android.widget.Toast; | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.annotation.Nullable; | ||||
| 
 | ||||
| import org.commonmark.node.Block; | ||||
| import org.commonmark.node.BlockQuote; | ||||
| import org.commonmark.node.Node; | ||||
| import org.commonmark.parser.Parser; | ||||
| 
 | ||||
| import java.util.Set; | ||||
| 
 | ||||
| import io.noties.markwon.AbstractMarkwonPlugin; | ||||
| import io.noties.markwon.Markwon; | ||||
| import io.noties.markwon.core.CorePlugin; | ||||
| import io.noties.markwon.sample.ActivityWithMenuOptions; | ||||
| @ -26,7 +32,8 @@ public class CoreActivity extends ActivityWithMenuOptions { | ||||
|         return MenuOptions.create() | ||||
|                 .add("simple", this::simple) | ||||
|                 .add("toast", this::toast) | ||||
|                 .add("alreadyParsed", this::alreadyParsed); | ||||
|                 .add("alreadyParsed", this::alreadyParsed) | ||||
|                 .add("enabledBlockTypes", this::enabledBlockTypes); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
| @ -132,4 +139,28 @@ public class CoreActivity extends ActivityWithMenuOptions { | ||||
|         // apply parsed markdown | ||||
|         markwon.setParsedMarkdown(textView, spanned); | ||||
|     } | ||||
| 
 | ||||
|     private void enabledBlockTypes() { | ||||
| 
 | ||||
|         final String md = "" + | ||||
|                 "# Head\n\n" + | ||||
|                 "> and disabled quote\n\n" + | ||||
|                 "```\n" + | ||||
|                 "yep\n" + | ||||
|                 "```"; | ||||
| 
 | ||||
|         final Set<Class<? extends Block>> blocks = CorePlugin.enabledBlockTypes(); | ||||
|         blocks.remove(BlockQuote.class); | ||||
| 
 | ||||
|         final Markwon markwon = Markwon.builder(this) | ||||
|                 .usePlugin(new AbstractMarkwonPlugin() { | ||||
|                     @Override | ||||
|                     public void configureParser(@NonNull Parser.Builder builder) { | ||||
|                         builder.enabledBlockTypes(blocks); | ||||
|                     } | ||||
|                 }) | ||||
|                 .build(); | ||||
| 
 | ||||
|         markwon.setMarkdown(textView, md); | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Dimitry Ivanov
						Dimitry Ivanov