diff --git a/app-sample/samples.json b/app-sample/samples.json
index e846fcb1..23fcb84b 100644
--- a/app-sample/samples.json
+++ b/app-sample/samples.json
@@ -1,7 +1,31 @@
[
+ {
+ "javaClassName": "io.noties.markwon.app.samples.html.HtmlCssStyleParserSample",
+ "id": "20210118155530",
+ "title": "CSS attributes in HTML",
+ "description": "Parse CSS attributes of HTML tags with `CssInlineStyleParser`",
+ "artifacts": [
+ "HTML"
+ ],
+ "tags": [
+ "HTML"
+ ]
+ },
+ {
+ "javaClassName": "io.noties.markwon.app.samples.basics.OneLineNoMarkdownSample",
+ "id": "20210118154116",
+ "title": "One line text",
+ "description": "Single line text without markdown markup",
+ "artifacts": [
+ "CORE"
+ ],
+ "tags": [
+ "rendering"
+ ]
+ },
{
"javaClassName": "io.noties.markwon.app.samples.tasklist.TaskListMutateNestedSample",
- "id": "20211228120444",
+ "id": "20201228120444",
"title": "Task list mutate nested",
"description": "Task list mutation with nested items",
"artifacts": [
diff --git a/app-sample/src/main/java/io/noties/markwon/app/samples/basics/OneLineNoMarkdownSample.java b/app-sample/src/main/java/io/noties/markwon/app/samples/basics/OneLineNoMarkdownSample.java
new file mode 100644
index 00000000..edecab5b
--- /dev/null
+++ b/app-sample/src/main/java/io/noties/markwon/app/samples/basics/OneLineNoMarkdownSample.java
@@ -0,0 +1,29 @@
+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 = "20210118154116",
+ title = "One line text",
+ description = "Single line text without markdown markup",
+ artifacts = MarkwonArtifact.CORE,
+ tags = Tags.rendering
+)
+public class OneLineNoMarkdownSample extends MarkwonTextViewSample {
+ @Override
+ public void render() {
+
+ textView.setBackgroundColor(0x40ff0000);
+
+ final String md = " Demo text ";
+
+ final Markwon markwon = Markwon.builder(context)
+ .build();
+
+ markwon.setMarkdown(textView, md);
+ }
+}
diff --git a/app-sample/src/main/java/io/noties/markwon/app/samples/html/HtmlCssStyleParserSample.java b/app-sample/src/main/java/io/noties/markwon/app/samples/html/HtmlCssStyleParserSample.java
new file mode 100644
index 00000000..e0b0defe
--- /dev/null
+++ b/app-sample/src/main/java/io/noties/markwon/app/samples/html/HtmlCssStyleParserSample.java
@@ -0,0 +1,99 @@
+package io.noties.markwon.app.samples.html;
+
+import android.graphics.Color;
+import android.text.TextUtils;
+import android.text.style.BackgroundColorSpan;
+import android.text.style.ForegroundColorSpan;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import io.noties.debug.Debug;
+import io.noties.markwon.Markwon;
+import io.noties.markwon.MarkwonConfiguration;
+import io.noties.markwon.RenderProps;
+import io.noties.markwon.app.sample.Tags;
+import io.noties.markwon.app.sample.ui.MarkwonTextViewSample;
+import io.noties.markwon.html.CssInlineStyleParser;
+import io.noties.markwon.html.CssProperty;
+import io.noties.markwon.html.HtmlPlugin;
+import io.noties.markwon.html.HtmlTag;
+import io.noties.markwon.html.tag.SimpleTagHandler;
+import io.noties.markwon.sample.annotations.MarkwonArtifact;
+import io.noties.markwon.sample.annotations.MarkwonSampleInfo;
+
+@MarkwonSampleInfo(
+ id = "20210118155530",
+ title = "CSS attributes in HTML",
+ description = "Parse CSS attributes of HTML tags with `CssInlineStyleParser`",
+ artifacts = MarkwonArtifact.HTML,
+ tags = Tags.html
+)
+public class HtmlCssStyleParserSample extends MarkwonTextViewSample {
+ @Override
+ public void render() {
+
+ final String md = "# CSS\n\n" +
+ "this has red background and then\n\n" +
+ "this is green";
+
+ final Markwon markwon = Markwon.builder(context)
+ .usePlugin(HtmlPlugin.create(plugin -> plugin.addHandler(new SpanTagHandler())))
+ .build();
+
+ markwon.setMarkdown(textView, md);
+ }
+
+ private static class SpanTagHandler extends SimpleTagHandler {
+
+ @Nullable
+ @Override
+ public Object getSpans(@NonNull MarkwonConfiguration configuration, @NonNull RenderProps renderProps, @NonNull HtmlTag tag) {
+ final String style = tag.attributes().get("style");
+ if (TextUtils.isEmpty(style)) {
+ return null;
+ }
+
+ int color = 0;
+ int backgroundColor = 0;
+
+ for (CssProperty property : CssInlineStyleParser.create().parse(style)) {
+ switch (property.key()) {
+
+ case "color":
+ color = Color.parseColor(property.value());
+ break;
+
+ case "background-color":
+ backgroundColor = Color.parseColor(property.value());
+ break;
+
+ default:
+ Debug.i("unexpected CSS property: %s", property);
+ }
+ }
+
+ final List