Markwon

Additional

Language
Java
Version
v4.1.1 (Aug 29, 2019)
Created
May 18, 2017
Updated
Aug 30, 2019
Owner
Dimitry (noties)
Contributors
Dimitry (noties)
Łukasz Rutkowski (Tunous)
c-b-h
FlorianObermayer
4
Activity
Badge
Generate
Download
Source code
APK file

Advertisement

Markwon

Markwon is a markdown library for Android. It parses markdown following commonmark-spec with the help of amazing commonmark-java library and renders result as Android-native Spannables. No HTML is involved as an intermediate step. No WebView is required. It's extremely fast, feature-rich and extensible.

It gives ability to display markdown in all TextView widgets (TextView, Button, Switch, CheckBox, etc), Toasts and all other places that accept Spanned content. Library provides reasonable defaults to display style of a markdown content but also gives all the means to tweak the appearance if desired. All markdown features listed in commonmark-spec are supported (including support for inlined/block HTML code, markdown tables, images and syntax highlight).

*This file is displayed by default in the sample-apk (markwon-sample-{latest-version}-debug.apk) application. Which is a generic markdown viewer with support to display markdown via http, https & file schemes and 2 themes included: Light & Dark

Installation

implementation "io.noties.markwon:core:${markwonVersion}"

Full list of available artifacts is present in the install section of the documentation web-site.

Please visit documentation web-site for further reference.

You can find previous version of Markwon in 2.x.x and 3.x.x branches

Supported markdown features:

  • Emphasis (*, _)
  • Strong emphasis (**, __)
  • Strike-through (~~)
  • Headers (#{1,6})
  • Links ([]() && [][])
  • Images
  • Thematic break (---, ***, ___)
  • Quotes & nested quotes (>{1,})
  • Ordered & non-ordered lists & nested ones
  • Inline code
  • Code blocks
  • Tables (with limitations)
  • Syntax highlight
  • LaTeX formulas
  • HTML
    • Emphasis (<i>, <em>, <cite>, <dfn>)
    • Strong emphasis (<b>, <strong>)
    • SuperScript (<sup>)
    • SubScript (<sub>)
    • Underline (<u>, ins)
    • Strike-through (<s>, <strike>, <del>)
    • Link (a)
    • Lists (ul, ol)
    • Images (img will require configured image loader)
    • Blockquote (blockquote)
    • Heading (h1, h2, h3, h4, h5, h6)
    • there is support to render any HTML tag
  • Task lists:
  • Not
    • Done with X
    done
  • andor small x


s = "Python syntax highlighting"
print s
/**
 * Helper method to obtain a Parser with registered strike-through &amp; table extensions
 * &amp; task lists (added in 1.0.1)
 *
 * @return a Parser instance that is supported by this library
 * @since 1.0.0
 */
@NonNull
public static Parser createParser() {
  return new Parser.Builder()
      .extensions(Arrays.asList(
          StrikethroughExtension.create(),
          TablesExtension.create(),
          TaskListExtension.create()
      ))
      .build();
}
<ScrollView
  android:id="@+id/scroll_view"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_marginTop="?android:attr/actionBarSize">

  <TextView
    android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="16dip"
    android:lineSpacingExtra="2dip"
    android:textSize="16sp"
    tools:text="yo\nman" />

</ScrollView>
No language indicated, so no syntax highlighting.
But let's throw in a <b>tag</b>.