diff --git a/CHANGELOG.md b/CHANGELOG.md
index a4607ed5..38b9e884 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
# Changelog
-# $nap;
+# 4.4.0
* `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])
diff --git a/gradle.properties b/gradle.properties
index c1d97523..559ebd01 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -8,7 +8,7 @@ android.enableJetifier=true
android.enableBuildCache=true
android.buildCacheDir=build/pre-dex-cache
-VERSION_NAME=4.4.0-SNAPSHOT
+VERSION_NAME=4.4.0
GROUP=io.noties.markwon
POM_DESCRIPTION=Markwon markdown for Android
diff --git a/markwon-core/src/main/java/io/noties/markwon/Markwon.java b/markwon-core/src/main/java/io/noties/markwon/Markwon.java
index 1422bf3c..326a70c2 100644
--- a/markwon-core/src/main/java/io/noties/markwon/Markwon.java
+++ b/markwon-core/src/main/java/io/noties/markwon/Markwon.java
@@ -196,9 +196,9 @@ public abstract class Markwon {
* Control if small chunks of non-finished markdown sentences (for example, a single `*` character)
* should be displayed/rendered as raw input instead of an empty string.
*
- * Since $nap; {@code true} by default, versions prior - {@code false}
+ * Since 4.4.0 {@code true} by default, versions prior - {@code false}
*
- * @since $nap;
+ * @since 4.4.0
*/
@NonNull
Builder fallbackToRawInputWhenEmpty(boolean fallbackToRawInputWhenEmpty);
diff --git a/markwon-core/src/main/java/io/noties/markwon/MarkwonBuilderImpl.java b/markwon-core/src/main/java/io/noties/markwon/MarkwonBuilderImpl.java
index 9d470f87..ae0f2f9d 100644
--- a/markwon-core/src/main/java/io/noties/markwon/MarkwonBuilderImpl.java
+++ b/markwon-core/src/main/java/io/noties/markwon/MarkwonBuilderImpl.java
@@ -27,7 +27,7 @@ class MarkwonBuilderImpl implements Markwon.Builder {
private Markwon.TextSetter textSetter;
- // @since $nap;
+ // @since 4.4.0
private boolean fallbackToRawInputWhenEmpty = true;
MarkwonBuilderImpl(@NonNull Context context) {
diff --git a/markwon-core/src/main/java/io/noties/markwon/MarkwonConfiguration.java b/markwon-core/src/main/java/io/noties/markwon/MarkwonConfiguration.java
index e19c8228..9b37e89f 100644
--- a/markwon-core/src/main/java/io/noties/markwon/MarkwonConfiguration.java
+++ b/markwon-core/src/main/java/io/noties/markwon/MarkwonConfiguration.java
@@ -24,7 +24,7 @@ public class MarkwonConfiguration {
private final AsyncDrawableLoader asyncDrawableLoader;
private final SyntaxHighlight syntaxHighlight;
private final LinkResolver linkResolver;
- // @since $nap;
+ // @since 4.4.0
private final ImageDestinationProcessor imageDestinationProcessor;
private final ImageSizeResolver imageSizeResolver;
@@ -62,7 +62,7 @@ public class MarkwonConfiguration {
}
/**
- * @since $nap;
+ * @since 4.4.0
*/
@NonNull
public ImageDestinationProcessor imageDestinationProcessor() {
@@ -89,7 +89,7 @@ public class MarkwonConfiguration {
private AsyncDrawableLoader asyncDrawableLoader;
private SyntaxHighlight syntaxHighlight;
private LinkResolver linkResolver;
- // @since $nap;
+ // @since 4.4.0
private ImageDestinationProcessor imageDestinationProcessor;
private ImageSizeResolver imageSizeResolver;
private MarkwonSpansFactory spansFactory;
@@ -119,7 +119,7 @@ public class MarkwonConfiguration {
}
/**
- * @since $nap;
+ * @since 4.4.0
*/
@NonNull
public Builder imageDestinationProcessor(@NonNull ImageDestinationProcessor imageDestinationProcessor) {
@@ -157,7 +157,7 @@ public class MarkwonConfiguration {
linkResolver = new LinkResolverDef();
}
- // @since $nap;
+ // @since 4.4.0
if (imageDestinationProcessor == null) {
imageDestinationProcessor = ImageDestinationProcessor.noOp();
}
diff --git a/markwon-core/src/main/java/io/noties/markwon/MarkwonImpl.java b/markwon-core/src/main/java/io/noties/markwon/MarkwonImpl.java
index 999e2f68..1e0d7930 100644
--- a/markwon-core/src/main/java/io/noties/markwon/MarkwonImpl.java
+++ b/markwon-core/src/main/java/io/noties/markwon/MarkwonImpl.java
@@ -30,7 +30,7 @@ class MarkwonImpl extends Markwon {
@Nullable
private final TextSetter textSetter;
- // @since $nap;
+ // @since 4.4.0
private final boolean fallbackToRawInputWhenEmpty;
MarkwonImpl(
@@ -96,7 +96,7 @@ class MarkwonImpl extends Markwon {
public Spanned toMarkdown(@NonNull String input) {
final Spanned spanned = render(parse(input));
- // @since $nap;
+ // @since 4.4.0
// if spanned is empty, we are configured to use raw input and input is not empty
if (TextUtils.isEmpty(spanned)
&& fallbackToRawInputWhenEmpty
diff --git a/markwon-core/src/main/java/io/noties/markwon/core/CorePlugin.java b/markwon-core/src/main/java/io/noties/markwon/core/CorePlugin.java
index 36b8b277..1c576e7f 100644
--- a/markwon-core/src/main/java/io/noties/markwon/core/CorePlugin.java
+++ b/markwon-core/src/main/java/io/noties/markwon/core/CorePlugin.java
@@ -97,7 +97,7 @@ public class CorePlugin extends AbstractMarkwonPlugin {
/**
* @return a set with enabled by default block types
- * @since $nap;
+ * @since 4.4.0
*/
@NonNull
public static Set> enabledBlockTypes() {
@@ -175,7 +175,7 @@ public class CorePlugin extends AbstractMarkwonPlugin {
public void beforeSetText(@NonNull TextView textView, @NonNull Spanned markdown) {
OrderedListItemSpan.measure(textView, markdown);
- // @since $nap;
+ // @since 4.4.0
// we do not break API compatibility, instead we introduce the `instance of` check
if (markdown instanceof Spannable) {
final Spannable spannable = (Spannable) markdown;
diff --git a/markwon-core/src/main/java/io/noties/markwon/core/spans/TextLayoutSpan.java b/markwon-core/src/main/java/io/noties/markwon/core/spans/TextLayoutSpan.java
index 679bd58c..e4e2e57b 100644
--- a/markwon-core/src/main/java/io/noties/markwon/core/spans/TextLayoutSpan.java
+++ b/markwon-core/src/main/java/io/noties/markwon/core/spans/TextLayoutSpan.java
@@ -10,7 +10,7 @@ import androidx.annotation.Nullable;
import java.lang.ref.WeakReference;
/**
- * @since $nap;
+ * @since 4.4.0
*/
public class TextLayoutSpan {
diff --git a/markwon-core/src/main/java/io/noties/markwon/core/spans/TextViewSpan.java b/markwon-core/src/main/java/io/noties/markwon/core/spans/TextViewSpan.java
index 3e527a9f..71db81b8 100644
--- a/markwon-core/src/main/java/io/noties/markwon/core/spans/TextViewSpan.java
+++ b/markwon-core/src/main/java/io/noties/markwon/core/spans/TextViewSpan.java
@@ -12,7 +12,7 @@ import java.lang.ref.WeakReference;
/**
* A special span that allows to obtain {@code TextView} in which spans are displayed
*
- * @since $nap;
+ * @since 4.4.0
*/
public class TextViewSpan {
diff --git a/markwon-core/src/main/java/io/noties/markwon/image/AsyncDrawableSpan.java b/markwon-core/src/main/java/io/noties/markwon/image/AsyncDrawableSpan.java
index fe34b4c9..27e43720 100644
--- a/markwon-core/src/main/java/io/noties/markwon/image/AsyncDrawableSpan.java
+++ b/markwon-core/src/main/java/io/noties/markwon/image/AsyncDrawableSpan.java
@@ -100,7 +100,7 @@ public class AsyncDrawableSpan extends ReplacementSpan {
int bottom,
@NonNull Paint paint) {
- // @since $nap; use SpanUtils instead of `canvas.getWidth`
+ // @since 4.4.0 use SpanUtils instead of `canvas.getWidth`
drawable.initWithKnownDimensions(
SpanUtils.width(canvas, text),
paint.getTextSize()
diff --git a/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessor.java b/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessor.java
index 831c0b7c..ec70f8f3 100644
--- a/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessor.java
+++ b/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessor.java
@@ -5,7 +5,7 @@ import androidx.annotation.NonNull;
/**
* Process destination of image nodes
*
- * @since $nap;
+ * @since 4.4.0
*/
public abstract class ImageDestinationProcessor {
@NonNull
diff --git a/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessorAssets.java b/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessorAssets.java
index 169d2527..b52a04ca 100644
--- a/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessorAssets.java
+++ b/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessorAssets.java
@@ -15,7 +15,7 @@ import androidx.annotation.Nullable;
* {@code FileSchemeHandler} from the {@code image} module supports asset images when created with
* {@code createWithAssets} factory method
*
- * @since $nap;
+ * @since 4.4.0
*/
public class ImageDestinationProcessorAssets extends ImageDestinationProcessor {
diff --git a/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessorRelativeToAbsolute.java b/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessorRelativeToAbsolute.java
index 9e04e1aa..23f1c706 100644
--- a/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessorRelativeToAbsolute.java
+++ b/markwon-core/src/main/java/io/noties/markwon/image/destination/ImageDestinationProcessorRelativeToAbsolute.java
@@ -7,7 +7,7 @@ import java.net.MalformedURLException;
import java.net.URL;
/**
- * @since $nap;
+ * @since 4.4.0
*/
public class ImageDestinationProcessorRelativeToAbsolute extends ImageDestinationProcessor {
diff --git a/markwon-core/src/main/java/io/noties/markwon/utils/LayoutUtils.java b/markwon-core/src/main/java/io/noties/markwon/utils/LayoutUtils.java
index d1c4cb77..32c763e4 100644
--- a/markwon-core/src/main/java/io/noties/markwon/utils/LayoutUtils.java
+++ b/markwon-core/src/main/java/io/noties/markwon/utils/LayoutUtils.java
@@ -6,7 +6,7 @@ import android.text.Layout;
import androidx.annotation.NonNull;
/**
- * @since $nap;
+ * @since 4.4.0
*/
public abstract class LayoutUtils {
diff --git a/markwon-core/src/main/java/io/noties/markwon/utils/SpanUtils.java b/markwon-core/src/main/java/io/noties/markwon/utils/SpanUtils.java
index 96396add..baf0449a 100644
--- a/markwon-core/src/main/java/io/noties/markwon/utils/SpanUtils.java
+++ b/markwon-core/src/main/java/io/noties/markwon/utils/SpanUtils.java
@@ -11,7 +11,7 @@ import io.noties.markwon.core.spans.TextLayoutSpan;
import io.noties.markwon.core.spans.TextViewSpan;
/**
- * @since $nap;
+ * @since 4.4.0
*/
public abstract class SpanUtils {
diff --git a/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathPlugin.java b/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathPlugin.java
index abd399e3..dd8a606e 100644
--- a/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathPlugin.java
+++ b/markwon-ext-latex/src/main/java/io/noties/markwon/ext/latex/JLatexMathPlugin.java
@@ -529,7 +529,7 @@ public class JLatexMathPlugin extends AbstractMarkwonPlugin {
@Override
public Rect resolveImageSize(@NonNull AsyncDrawable drawable) {
- // @since $nap; resolve inline size (scale down if exceed available width)
+ // @since 4.4.0 resolve inline size (scale down if exceed available width)
final Rect imageBounds = drawable.getResult().getBounds();
final int canvasWidth = drawable.getLastKnownCanvasWidth();
final int w = imageBounds.width();
diff --git a/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TableRowSpan.java b/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TableRowSpan.java
index 0bf48626..c4fd8204 100644
--- a/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TableRowSpan.java
+++ b/markwon-ext-tables/src/main/java/io/noties/markwon/ext/tables/TableRowSpan.java
@@ -339,10 +339,10 @@ public class TableRowSpan extends ReplacementSpan {
false
);
- // @since $nap;
+ // @since 4.4.0
TextLayoutSpan.applyTo(spannable, layout);
- // @since $nap;
+ // @since 4.4.0
scheduleAsyncDrawables(spannable, recreate);
layouts.add(index, layout);
diff --git a/markwon-html/src/main/java/io/noties/markwon/html/HtmlEmptyTagReplacement.java b/markwon-html/src/main/java/io/noties/markwon/html/HtmlEmptyTagReplacement.java
index 8ad5f05a..b074dcea 100644
--- a/markwon-html/src/main/java/io/noties/markwon/html/HtmlEmptyTagReplacement.java
+++ b/markwon-html/src/main/java/io/noties/markwon/html/HtmlEmptyTagReplacement.java
@@ -46,7 +46,7 @@ public class HtmlEmptyTagReplacement {
replacement = alt;
}
} else if ("iframe".equals(name)) {
- // @since $nap; make iframe non-empty
+ // @since 4.4.0 make iframe non-empty
replacement = IFRAME_REPLACEMENT;
} else {
replacement = null;
diff --git a/markwon-html/src/main/java/io/noties/markwon/html/HtmlPlugin.java b/markwon-html/src/main/java/io/noties/markwon/html/HtmlPlugin.java
index 5e974ea0..f2c2ea54 100644
--- a/markwon-html/src/main/java/io/noties/markwon/html/HtmlPlugin.java
+++ b/markwon-html/src/main/java/io/noties/markwon/html/HtmlPlugin.java
@@ -57,7 +57,7 @@ public class HtmlPlugin extends AbstractMarkwonPlugin {
private MarkwonHtmlParser htmlParser;
private MarkwonHtmlRenderer htmlRenderer;
- // @since $nap;
+ // @since 4.4.0
private HtmlEmptyTagReplacement emptyTagReplacement = new HtmlEmptyTagReplacement();
@SuppressWarnings("WeakerAccess")
@@ -109,7 +109,7 @@ public class HtmlPlugin extends AbstractMarkwonPlugin {
/**
* @param emptyTagReplacement {@link HtmlEmptyTagReplacement}
- * @since $nap;
+ * @since 4.4.0
*/
@NonNull
public HtmlPlugin emptyTagReplacement(@NonNull HtmlEmptyTagReplacement emptyTagReplacement) {
diff --git a/release-management.md b/release-management.md
index ce66bb97..da2721d5 100644
--- a/release-management.md
+++ b/release-management.md
@@ -38,7 +38,8 @@ For example, `@since $nap` seems like a good candidate. For this a live template
whenever a new API method/field/functionality-change is introduced (`snc`):
```
-@since $nap;
+// semicolon with a space so this one is not accedentally replaced with release version
+@since $nap ;
```
This live template would be possible to use in both inline comment and javadoc comment.