Sample app, first real sample
This commit is contained in:
		
							parent
							
								
									bea6d6aeec
								
							
						
					
					
						commit
						dc139319a0
					
				| @ -1,45 +1,14 @@ | ||||
| [ | ||||
|   { | ||||
|     "javaClassName": "io.noties.markwon.app.samples.nested.ThirdSample", | ||||
|     "id": "202006177155827", | ||||
|     "title": "Third sample", | ||||
|     "description": "\u003e yo! \n\n```\nfinal int i \u003d 0;\n```", | ||||
|     "artifacts": [ | ||||
|       "EDITOR", | ||||
|       "SIMPLE_EXT" | ||||
|     ], | ||||
|     "tags": [ | ||||
|       "a", | ||||
|       "c", | ||||
|       "test" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "javaClassName": "io.noties.markwon.app.samples.nested.SecondSample", | ||||
|     "id": "202006177155656", | ||||
|     "title": "Second sample", | ||||
|     "description": "# Hey hey hey", | ||||
|     "artifacts": [ | ||||
|       "CORE", | ||||
|       "RECYCLER" | ||||
|     ], | ||||
|     "tags": [ | ||||
|       "a", | ||||
|       "b", | ||||
|       "c", | ||||
|       "test" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "javaClassName": "io.noties.markwon.app.samples.FirstSample", | ||||
|     "id": "202006164150023", | ||||
|     "title": "First Sample", | ||||
|     "description": "This **is** _the first_ sample", | ||||
|     "javaClassName": "io.noties.markwon.app.samples.basics.Simple", | ||||
|     "id": "202006178152255", | ||||
|     "title": "Simple", | ||||
|     "description": "The most primitive and simple way to apply markdown to a `TextView`", | ||||
|     "artifacts": [ | ||||
|       "CORE" | ||||
|     ], | ||||
|     "tags": [ | ||||
|       "test" | ||||
|       "basics" | ||||
|     ] | ||||
|   } | ||||
| ] | ||||
| @ -0,0 +1,5 @@ | ||||
| package io.noties.markwon.app.sample | ||||
| 
 | ||||
| object Tags { | ||||
|     const val basics = "basics" | ||||
| } | ||||
| @ -1,30 +0,0 @@ | ||||
| package io.noties.markwon.app.samples | ||||
| 
 | ||||
| import io.noties.markwon.Markwon | ||||
| import io.noties.markwon.app.sample.ui.MarkwonTextViewSample | ||||
| import io.noties.markwon.sample.annotations.MarkwonArtifact | ||||
| import io.noties.markwon.sample.annotations.MarkwonSampleInfo | ||||
| 
 | ||||
| @MarkwonSampleInfo( | ||||
|   id = "202006164150023", | ||||
|   title = "First Sample", | ||||
|   description = "This **is** _the first_ sample", | ||||
|   artifacts = [MarkwonArtifact.CORE], | ||||
|   tags = ["test"] | ||||
| ) | ||||
| class FirstSample : MarkwonTextViewSample() { | ||||
| 
 | ||||
|   override fun render() { | ||||
| 
 | ||||
|     val md = """ | ||||
|             # Hello there! | ||||
|             > How are you? | ||||
|              | ||||
|             **bold** and _italic_ and **bold _italic bold_ just bold** | ||||
|         """.trimIndent() | ||||
| 
 | ||||
|     val markwon: Markwon = Markwon.create(context) | ||||
| 
 | ||||
|     markwon.setMarkdown(textView, md) | ||||
|   } | ||||
| } | ||||
| @ -0,0 +1,33 @@ | ||||
| package io.noties.markwon.app.samples.basics | ||||
| 
 | ||||
| import io.noties.markwon.Markwon | ||||
| import io.noties.markwon.app.sample.Tags | ||||
| import io.noties.markwon.app.sample.ui.MarkwonTextViewSample | ||||
| import io.noties.markwon.sample.annotations.MarkwonArtifact | ||||
| import io.noties.markwon.sample.annotations.MarkwonSampleInfo | ||||
| 
 | ||||
| @MarkwonSampleInfo( | ||||
|   id = "202006178152255", | ||||
|   title = "Simple", | ||||
|   description = "The most primitive and simple way to apply markdown to a `TextView`", | ||||
|   artifacts = [MarkwonArtifact.CORE], | ||||
|   tags = [Tags.basics] | ||||
| ) | ||||
| class Simple : MarkwonTextViewSample() { | ||||
|   override fun render() { | ||||
|     // markdown input | ||||
|     val md = """ | ||||
|       # Heading | ||||
|        | ||||
|       > A quote | ||||
|        | ||||
|       **bold _italic_ bold** | ||||
|     """.trimIndent() | ||||
| 
 | ||||
|     // markwon instance | ||||
|     val markwon = Markwon.create(context) | ||||
| 
 | ||||
|     // apply raw markdown (internally parsed and rendered) | ||||
|     markwon.setMarkdown(textView, md) | ||||
|   } | ||||
| } | ||||
| @ -1,65 +0,0 @@ | ||||
| package io.noties.markwon.app.samples.nested | ||||
| 
 | ||||
| import io.noties.markwon.Markwon | ||||
| import io.noties.markwon.app.sample.ui.MarkwonTextViewSample | ||||
| import io.noties.markwon.sample.annotations.MarkwonArtifact | ||||
| import io.noties.markwon.sample.annotations.MarkwonSampleInfo | ||||
| 
 | ||||
| @MarkwonSampleInfo( | ||||
|   id = "202006177155656", | ||||
|   title = "Second sample", | ||||
|   description = "# Hey hey hey", | ||||
|   artifacts = [MarkwonArtifact.CORE, MarkwonArtifact.RECYCLER], | ||||
|   tags = ["b", "c", "a", "test"] | ||||
| ) | ||||
| class SecondSample : MarkwonTextViewSample() { | ||||
|   override fun render() { | ||||
|     val md = """ | ||||
|       # Hello second | ||||
|        | ||||
|       ```java | ||||
|       final int i = 0; | ||||
|       ``` | ||||
|     """.trimIndent() | ||||
| 
 | ||||
|     val markwon = Markwon.create(context) | ||||
|     markwon.setMarkdown(textView, md) | ||||
|   } | ||||
| 
 | ||||
|   val _mock: String | ||||
|   get() = """ | ||||
|     a | ||||
|     b | ||||
|     d | ||||
|     s | ||||
|     as | ||||
|     sd | ||||
|     ds | ||||
|     sd | ||||
|     s | ||||
|     sd | ||||
|     sd | ||||
|     ds | ||||
|     sd | ||||
|     sd | ||||
|     sd | ||||
|     sd | ||||
|     sd | ||||
|     sd | ||||
|     ds | ||||
|     sd | ||||
|     sd | ||||
|      | ||||
|     s | ||||
|     sd | ||||
|     sd | ||||
|     sd | ||||
|     sd | ||||
|     sd | ||||
|      | ||||
|     ds | ||||
|     sd | ||||
|     sd | ||||
|     sd | ||||
|   """.trimIndent() | ||||
| } | ||||
| @ -1,22 +0,0 @@ | ||||
| package io.noties.markwon.app.samples.nested; | ||||
| 
 | ||||
| import io.noties.markwon.Markwon; | ||||
| import io.noties.markwon.app.sample.ui.MarkwonTextViewSample; | ||||
| import io.noties.markwon.sample.annotations.MarkwonArtifact; | ||||
| import io.noties.markwon.sample.annotations.MarkwonSampleInfo; | ||||
| 
 | ||||
| @MarkwonSampleInfo( | ||||
|   id = "202006177155827", | ||||
|   title = "Third sample", | ||||
|   description = "> yo! \n\n```\nfinal int i = 0;\n```", | ||||
|   artifacts = {MarkwonArtifact.SIMPLE_EXT, MarkwonArtifact.EDITOR}, | ||||
|   tags = {"a", "c", "test"} | ||||
| ) | ||||
| public class ThirdSample extends MarkwonTextViewSample { | ||||
|   @Override | ||||
|   public void render() { | ||||
|     final String md = "# Hello!"; | ||||
|     final Markwon markwon = Markwon.create(context); | ||||
|     markwon.setMarkdown(textView, md); | ||||
|   } | ||||
| } | ||||
| @ -5,6 +5,7 @@ import java.lang.annotation.Retention; | ||||
| import java.lang.annotation.RetentionPolicy; | ||||
| import java.lang.annotation.Target; | ||||
| 
 | ||||
| // NB! if class was just removed if won't be removed from samples.json | ||||
| @Retention(RetentionPolicy.SOURCE) | ||||
| @Target(ElementType.TYPE) | ||||
| public @interface MarkwonSampleInfo { | ||||
| @ -22,7 +23,7 @@ public @interface MarkwonSampleInfo { | ||||
| 
 | ||||
|     String title(); | ||||
| 
 | ||||
|     String description(); | ||||
|     String description() default ""; | ||||
| 
 | ||||
|     MarkwonArtifact[] artifacts(); | ||||
| 
 | ||||
|  | ||||
| @ -21,6 +21,7 @@ import java.util.ArrayList; | ||||
| import java.util.Arrays; | ||||
| import java.util.Collections; | ||||
| import java.util.Comparator; | ||||
| import java.util.HashSet; | ||||
| import java.util.List; | ||||
| import java.util.ListIterator; | ||||
| import java.util.Locale; | ||||
| @ -87,16 +88,22 @@ public class MarkwonSampleProcessor extends AbstractProcessor { | ||||
|         if (!roundEnvironment.processingOver()) { | ||||
|             final long begin = System.currentTimeMillis(); | ||||
|             final Set<? extends Element> elements = roundEnvironment.getElementsAnnotatedWith(MarkwonSampleInfo.class); | ||||
|             if (elements != null) { | ||||
|             // we should not have zero samples | ||||
|             if (elements != null && elements.size() > 0) { | ||||
| 
 | ||||
|                 final HashSet<MarkwonSample> markwonSamples = new HashSet<>(); | ||||
|                 for (Element element : elements) { | ||||
|                     process(element); | ||||
|                     try { | ||||
|                         markwonSamples.add(parse((TypeElement) element)); | ||||
|                     } catch (Throwable t) { | ||||
|                         throw new RuntimeException(t); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 if (samplesUpdated) { | ||||
|                 if (!markwonSamples.equals(new HashSet<>(samples))) { | ||||
|                     logger.info("samples updated, writing at path: %s", samplesFilePath); | ||||
|                     try { | ||||
|                         writeSamples(samplesFilePath, samples); | ||||
|                         writeSamples(samplesFilePath, markwonSamples); | ||||
|                     } catch (Throwable t) { | ||||
|                         logger.error(t.getMessage()); | ||||
|                         throw new RuntimeException(t); | ||||
| @ -145,7 +152,7 @@ public class MarkwonSampleProcessor extends AbstractProcessor { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private static void writeSamples(@NonNull String path, @NonNull List<MarkwonSample> samples) throws Throwable { | ||||
|     private static void writeSamples(@NonNull String path, @NonNull Set<MarkwonSample> markwonSamples) throws Throwable { | ||||
| 
 | ||||
|         final File file = new File(path); | ||||
| 
 | ||||
| @ -159,6 +166,8 @@ public class MarkwonSampleProcessor extends AbstractProcessor { | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         final List<MarkwonSample> samples = new ArrayList<>(markwonSamples); | ||||
| 
 | ||||
|         // sort based on id (it is date) | ||||
|         // new items come first (DESC order) | ||||
|         Collections.sort(samples, (lhs, rhs) -> rhs.id.compareTo(lhs.id)); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Dimitry Ivanov
						Dimitry Ivanov