Markwon

Android markdown library (no WebView)

APACHE-2.0 License

Stars
2.8K

Bot releases are visible (Hide)

Markwon - Latest Release

Published by noties over 3 years ago

Added

  • image - DefaultDownScalingMediaDecoder which scales displayed images down (#329)
Markwon -

Published by noties almost 4 years ago

Changed

  • core - CustomTypefaceSpan new mergeStyles functionality and new factory method(#298)Thanks @c-b-h
  • image-coil - update Coil to 0.13.0 (#303)Thanks @ubuntudroid

Deprecated

  • core - CustomTypefaceSpan(Typeface) constructor, use CustomTypefaceSpan.create(Typeface)
    or CustomTypefaceSpan.create(Typeface, boolean) factory methods instead
Markwon -

Published by noties about 4 years ago

Added

  • ext-tables - TableAwareMovementMethod a special movement method to handle clicks inside tables (#289)

Changed

  • ext-tasklist - changed implementation to be in line with GFM (Github flavored markdown),
    task list item is a regular list item (BulletList and OrderedList can contain it).
    Internal implementation changed from block parsing to node post processing (#291)
  • image-glide - update to 4.11.0 version
  • inline-parser - revert parsing index when InlineProcessor returns null as result
  • image-coil - update Coil to 0.12.0 (Coil changelog) (#284)Thanks @magnusvs
Markwon -

Published by noties about 4 years ago

Changed

  • image-coil - use coil-base as api dependency (would require explicit coil dependency) (#274)

Fixed

  • image-coil - deliver image result if it loaded before request disposable is created (#272)
  • ext-tables - fix column width rounding issue
Markwon -

Published by noties about 4 years ago

Added

  • core - MovementMethodPlugin.none(), MovementMethodPlugin.link() factory methods
  • core - CorePlugin hasExplicitMovementMethod configuration method to not add implicit LinkMovementMethod in afterSetText
  • core - MarkwonTheme isLinkedUnderlined attribute for links(#270)Thanks to @dallasgutauckis
  • ext-latex - JLatexMathTheme.Padding.of(int,int,int,int) factory method
  • app-sample - example application

Changed

  • html - SimpleTagHandler visits children tags if supplied tag is block one (#235)
  • inline-parser - BangInlineProcessor properly returns null if no image node is found (possible to define other inline parsers that use ! as special character)
  • image - AsyncDrawable won't trigger loading if it has result (aim: RecyclerView due to multiple attach/detach events of a View)
  • image - AsyncDrawable will resume result if it is Animatable and was playing before detach event (aim: RecyclerView) (#241)
  • core - MarkwonReducer filter out LinkReferenceDefinition nodes

Fixed

  • image-glide cache RequestManager in GlideImagesPlugin#create(Context) factory method (#259)

Deprecated

  • core - MovementMethodPlugin.create() use explicit MovementMethodPlugin.link() instead

Removed

  • image - AsyncDrawable#hasKnownDimentions (deprecated in 4.2.1)
  • app and sample applications (merged together in a app-sample single app)
Markwon -

Published by noties over 4 years ago

  • TextViewSpan to obtain TextView in which markdown is displayed (applied by CorePlugin)
  • TextLayoutSpan to obtain Layout in which markdown is displayed (applied by TablePlugin, more specifically TableRowSpan to propagate layout in which cell content is displayed)
  • HtmlEmptyTagReplacement now is configurable by HtmlPlugin, iframe handling (#235)
  • AsyncDrawable now uses TextView width without padding instead of width of canvas
  • Support for images inside table cells (ext-tables module)
  • Expose enabledBlockTypes in CorePlugin
  • Update jlatexmath-android dependency (#225)
  • Update image-coil module (Coil version 0.10.1) (#244)Thanks to @tylerbwong
  • Rename UrlProcessor to ImageDestinationProcessor (io.noties.markwon.urlprocessor -> io.noties.markwon.image.destination) and limit its usage to process only destination URL of images (was used to also process links before)
  • fallbackToRawInputWhenEmpty Markwon.Builder configuration to fallback to raw input if rendered markdown is empty (#242)
Markwon -

Published by noties over 4 years ago

  • Fix DexGuard optimization issue (#216)Thanks @francescocervone
  • module images: GifSupport and SvgSupport use Class.forName instead access to full qualified class name
  • ext-table: fix links in tables (#224)
  • ext-table: proper borders (equal for all sides)
  • module core: Add PrecomputedFutureTextSetterCompatThanks @KirkBushman
Markwon -

Published by noties over 4 years ago

  • add MarkwonInlineParserPlugin in inline-parser module
  • JLatexMathPlugin now supports inline LaTeX structures via MarkwonInlineParserPlugin
    dependency (must be explicitly added to Markwon whilst configuring)
  • JLatexMathPlugin: add theme (to customize both inlines and blocks)
  • add JLatexMathPlugin.ErrorHandler to catch latex rendering errors and (optionally) display error drawable (#204)
  • JLatexMathPlugin add text color customization (#207)
  • JLatexMathPlugin will use text color of widget in which it is displayed if color is not set explicitly
  • add SoftBreakAddsNewLinePlugin plugin (core module)
  • LinkResolverDef defaults to https when a link does not have scheme information (#75)
  • add option abstraction for sample module allowing switching of multiple cases in runtime via menu
  • non-empty bounds for AsyncDrawable when no dimensions are not yet available (#189)
  • linkify - option to use LinkifyCompat in LinkifyPlugin (#201)Thanks to @drakeet
  • MarkwonVisitor.BlockHandler and BlockHandlerDef implementation to control how blocks insert new lines after them
// default usage: new blocks parser, no inlines
final Markwon markwon = Markwon.builder(this)
    .usePlugin(JLatexMathPlugin.create(textSize))
    .build();
// legacy blocks (pre `4.3.0`) parsing, no inlines
final Markwon markwon =  Markwon.builder(this)
        .usePlugin(JLatexMathPlugin.create(textView.getTextSize(), builder -> builder.blocksLegacy(true)))
        .build();
// new blocks parsing and inline parsing
final Markwon markwon =  Markwon.builder(this)
        .usePlugin(JLatexMathPlugin.create(textView.getTextSize(), builder -> {
            // blocksEnabled and blocksLegacy can be omitted
            builder
                    .blocksEnabled(true)
                    .blocksLegacy(false)
                    .inlinesEnabled(true);
        }))
        .build();
Markwon -

Published by noties over 4 years ago

  • Fixed AsyncDrawable display when it has placeholder with empty bounds (#189)
  • Fixed syntax-highlight where code input is empty string (#192)
  • Add appendFactory/prependFactory in MarkwonSpansFactory.Builder for more explicit SpanFactory ordering (#193)
Markwon -

Published by noties over 4 years ago

  • Fix SpannableBuilder subSequence method
  • Introduce Nougat check in BulletListItemSpan to position bullet (for bullets to be
    positioned correctly when nested inside other LeadingMarginSpans)
  • Reduced number of invalidations in AsyncDrawable when result is ready
  • AsyncDrawable#hasKnownDimentions -> AsyncDrawable#hasKnownDimensions typo fix
Markwon -

Published by noties almost 5 years ago

  • MarkwonEditor to highlight markdown input whilst editing (new module: markwon-editor)
  • CoilImagesPlugin image loader based on Coil library (new module: markwon-image-coil) (#166, #174)Thanks to @tylerbwong
  • MarkwonInlineParser to customize inline parsing (new module: markwon-inline-parser)
  • Update commonmark-java to 0.13.0 (and commonmark spec 0.29)
  • Markwon#configuration method to expose MarkwonConfiguration via public API
  • HeadingSpan#getLevel getter
  • Add SvgPictureMediaDecoder in image module to deal with SVG without dimensions (#165)
  • LinkSpan#getLink method
  • LinkifyPlugin applies link span that is configured by Markwon (obtain via span factory)
  • LinkifyPlugin is thread-safe
Markwon -

Published by noties about 5 years ago

  • Do not re-use RenderProps when creating a new visitor (fixes #171)
Markwon -

Published by noties about 5 years ago

  • markwon-ext-tables: fix padding between subsequent table blocks (#159)
  • markwon-images: print a single warning instead full stacktrace in case when SVG or GIF
    are not present in the classpath (#160)
  • Make Markwon instance thread-safe by using a single MarkwonVisitor for each render call (#157)
  • Add CoreProps.CODE_BLOCK_INFO with code-block info (language)
Markwon -

Published by noties about 5 years ago

  • Add Markwon.TextSetter interface to be able to use PrecomputedText/PrecomputedTextCompat
  • Add PrecomputedTextSetterCompat and compileOnly dependency on androidx.core:core
    (clients must have this dependency in the classpath)
  • Add requirePlugin(Class) and getPlugins for Markwon instance
  • TablePlugin -> defer table invalidation (via View.post), so only one invalidation
    happens with each draw-call
  • AsyncDrawableSpan -> defer invalidation
Markwon -

Published by noties over 5 years ago

  • Fix JLatexMathPlugin formula placeholder (cannot have line breaks) (#149)
  • Fix JLatexMathPlugin to update resulting formula bounds when fitCanvas=true and
    formula exceed canvas width (scale down keeping formula width/height ratio)
Markwon -

Published by noties over 5 years ago

  • Fix JLatexMathPlugin (background-provider null) (#147)
Markwon -

Published by noties over 5 years ago

  • maven group-id change to io.noties.markwon (was ru.noties.markwon)
  • package name change to io.notier.markwon.* (was ru.noties.markwon.*)
  • androidx artifacts (#76)
  • Markwon#builder does not require explicit CorePlugin (added automatically),
    use Markwon#builderNoCore() to obtain a builder without CorePlugin
  • Removed Priority abstraction and MarkwonPlugin#priority (use MarkwonPlugin.Registry)
  • Removed MarkwonPlugin#configureHtmlRenderer (for configuration use HtmlPlugin directly)
  • Removed MarkwonPlugin#configureImages (for configuration use ImagesPlugin directly)
  • Added MarkwonPlugin.Registry and MarkwonPlugin#configure(Registry) method
  • CorePlugin#addOnTextAddedListener (process raw text added)
  • ImageSizeResolver signature change (accept AsyncDrawable)
  • LinkResolver is now an independent entity (previously part of LinkSpan)
  • AsyncDrawableScheduler can now be called multiple times without performance penalty
  • AsyncDrawable now exposes its destination, image-size, last known dimensions (canvas, text-size)
  • AsyncDrawableLoader signature change (accept AsyncDrawable)
  • Add LastLineSpacingSpan
  • Add MarkwonConfiguration.Builder#asyncDrawableLoader method
  • ImagesPlugin removed from core artifact
    (also removed images-gif, images-okhttp and images-svg artifacts and their plugins)
  • ImagesPlugin exposes configuration (adding scheme-handler, media-decoder, etc)
  • ImagesPlugin allows multiple images with the same source (URL)
  • Add PlaceholderProvider and ErrorHandler to ImagesPlugin
  • GIF and SVG media-decoders are automatically added to ImagesPlugin if required libraries are found in the classpath
  • ImageItem is now abstract, has 2 implementations: withResult, withDecodingNeeded
  • Add images-glide, images-picasso, linkify, simple-ext modules
  • JLatexMathPlugin is now independent of ImagesPlugin
  • Fix wrong JLatexMathPlugin formulas sizes (#138)
  • JLatexMathPlugin has backgroundProvider, executorService configuration
  • HtmlPlugin is self-contained (all configuration is moved in the plugin itself)
Markwon -

Published by noties over 5 years ago

  • AsyncDrawable exposes ImageSize, ImageSizeResolver and last known dimensions (canvas width and text size)
  • AsyncDrawableLoader load and cancel signatures change - both accept an AsyncDrawable
  • Fix for multiple images with the same source in AsyncDrawableLoader

With this release Markwon 3.x.x version goes into maintenance mode. No new features will be added in 3.x.x version, development is focused on 4.x.x version.

Markwon -

Published by noties over 5 years ago

  • Fix latex plugin (#136)
  • Add #create(Call.Factory) factory method to OkHttpImagesPlugin (#129)
    thanks to @ZacSweers
Markwon -

Published by noties over 5 years ago

  • Add AsyncDrawableLoader.Builder#implementation method (#109 )
  • AsyncDrawable allow placeholder to have independent size (#115 )
  • addFactory method for MarkwonSpansFactory
  • Add optional spans for list blocks (bullet and ordered)
  • AsyncDrawable placeholder bounds fix
  • SpannableBuilder setSpans allow array of arrays
  • Add requireFactory method to MarkwonSpansFactory
  • Add DrawableUtils
Package Rankings
Top 5.42% on Repo1.maven.org
Badges
Extracted from project README
Build
Related Projects