From 3c427f921e78f89dc0828d94226d28fdaa082418 Mon Sep 17 00:00:00 2001
From: Alex Kocharin
Date: Thu, 12 Mar 2020 16:37:09 +0300
Subject: [PATCH] Fix em- and en-dashes not being typographed when separated by
1 char
close https://github.com/markdown-it/markdown-it/issues/624
---
lib/rules_core/replacements.js | 6 +++---
test/fixtures/markdown-it/tables.txt | 20 ++++++++++----------
test/fixtures/markdown-it/typographer.txt | 13 +++++++++++++
3 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/lib/rules_core/replacements.js b/lib/rules_core/replacements.js
index 5b5a157..533496f 100644
--- a/lib/rules_core/replacements.js
+++ b/lib/rules_core/replacements.js
@@ -68,10 +68,10 @@ function replace_rare(inlineTokens) {
.replace(/\.{2,}/g, '…').replace(/([?!])…/g, '$1..')
.replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')
// em-dash
- .replace(/(^|[^-])---([^-]|$)/mg, '$1\u2014$2')
+ .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\u2014')
// en-dash
- .replace(/(^|\s)--(\s|$)/mg, '$1\u2013$2')
- .replace(/(^|[^-\s])--([^-\s]|$)/mg, '$1\u2013$2');
+ .replace(/(^|\s)--(?=\s|$)/mg, '$1\u2013')
+ .replace(/(^|[^-\s])--(?=[^-\s]|$)/mg, '$1\u2013');
}
}
diff --git a/test/fixtures/markdown-it/tables.txt b/test/fixtures/markdown-it/tables.txt
index a813375..dfd3460 100644
--- a/test/fixtures/markdown-it/tables.txt
+++ b/test/fixtures/markdown-it/tables.txt
@@ -168,11 +168,11 @@ bar|bar
Second line should not contain symbols except "-", ":", "|" and " ":
.
foo|foo
----|---s
+-----|-----s
bar|bar
.
foo|foo
-—|---s
+-----|-----s
bar|bar
.
@@ -180,11 +180,11 @@ bar|bar
Second line should contain "|" symbol:
.
foo|foo
----:---
+-----:-----
bar|bar
.
foo|foo
-—:---
+-----:-----
bar|bar
.
@@ -192,11 +192,11 @@ bar|bar
Second line should not have empty columns in the middle:
.
foo|foo
----||---
+-----||-----
bar|bar
.
foo|foo
-—||—
+-----||-----
bar|bar
.
@@ -204,11 +204,11 @@ bar|bar
Wrong alignment symbol position:
.
foo|foo
----|-::-
+-----|-::-
bar|bar
.
foo|foo
-—|-::-
+-----|-::-
bar|bar
.
@@ -216,11 +216,11 @@ bar|bar
Title line should contain "|" symbol:
.
foo
----|---
+-----|-----
bar|bar
.
foo
-—|---
+-----|-----
bar|bar
.
diff --git a/test/fixtures/markdown-it/typographer.txt b/test/fixtures/markdown-it/typographer.txt
index 0e38519..e9e2bfe 100644
--- a/test/fixtures/markdown-it/typographer.txt
+++ b/test/fixtures/markdown-it/typographer.txt
@@ -79,3 +79,16 @@ markdownit--awesome
–markdownit – super–
markdownit–awesome
.
+
+regression tests for #624
+.
+1---2---3
+
+1--2--3
+
+1 -- -- 3
+.
+1—2—3
+1–2–3
+1 – – 3
+.