fix(markdown): allow more cases that `_`-style emphasis is available (#3186)

* fix(markdown): add more cases `_`-style emphasis is available

* refactor: fix naming style
master
Ika 2017-11-07 20:33:29 +08:00 committed by Lucas Azzola
parent 49b07c3983
commit 18345817d8
4 changed files with 47 additions and 21 deletions

View File

@ -11,6 +11,12 @@ const fill = docBuilders.fill;
const align = docBuilders.align;
const docPrinter = require("./doc-printer");
const printDocToString = docPrinter.printDocToString;
const escapeStringRegexp = require("escape-string-regexp");
// http://spec.commonmark.org/0.25/#ascii-punctuation-character
const asciiPunctuationPattern = escapeStringRegexp(
"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
);
const SINGLE_LINE_NODE_TYPES = ["heading", "tableCell", "footnoteDefinition"];
@ -97,11 +103,17 @@ function genericPrint(path, options, print) {
(prevNode &&
prevNode.type === "sentence" &&
prevNode.children.length > 0 &&
prevNode.children[prevNode.children.length - 1].type === "word") ||
prevNode.children[prevNode.children.length - 1].type === "word" &&
prevNode.children[prevNode.children.length - 1].value.match(
new RegExp(`[^${asciiPunctuationPattern}]$`)
)) ||
(nextNode &&
nextNode.type === "sentence" &&
nextNode.children.length > 0 &&
nextNode.children[0].type === "word");
nextNode.children[0].type === "word" &&
nextNode.children[0].value.match(
new RegExp(`^[^${asciiPunctuationPattern}]`)
));
const style =
hasPrevOrNextWord || getAncestorNode(path, "emphasis") ? "*" : "_";
return concat([style, printChildren(path, options, print), style]);

View File

@ -7,6 +7,17 @@ _123_
`;
exports[`complex.md 1`] = `
**Do you want to request a *feature* or report a *bug*?**
*bug*?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Do you want to request a _feature_ or report a _bug_?**
_bug_?
`;
exports[`underscore.md 1`] = `
_123_
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -0,0 +1,3 @@
**Do you want to request a *feature* or report a *bug*?**
*bug*?

View File

@ -3333,7 +3333,7 @@ list \\* not a list \\# not a heading \\[foo]: /url "not a reference"
exports[`example-288.md 1`] = `
\\\\*emphasis*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\\\\*emphasis*
\\\\_emphasis_
`;
@ -3565,7 +3565,7 @@ exports[`example-316.md 1`] = `
exports[`example-317.md 1`] = `
*foo\`*\`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*foo\`*\`
_foo\`_\`
`;
@ -3705,7 +3705,7 @@ aa_"bb"_cc
exports[`example-338.md 1`] = `
foo-_(bar)_
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
foo-*(bar)*
foo-_(bar)_
`;
@ -3769,7 +3769,7 @@ _(_foo)
exports[`example-347.md 1`] = `
_(_foo_)_
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*(_foo*)_
_(_foo_)_
`;
@ -3797,7 +3797,7 @@ _foo_bar_baz_
exports[`example-351.md 1`] = `
_(bar)_.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*(bar)*.
_(bar)_.
`;
@ -3918,14 +3918,14 @@ exports[`example-368.md 1`] = `
**Gomphocarpus (*Gomphocarpus physocarpus*, syn.
*Asclepias physocarpa*)**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Gomphocarpus (*Gomphocarpus physocarpus*, syn. *Asclepias physocarpa*)**
**Gomphocarpus (_Gomphocarpus physocarpus_, syn. _Asclepias physocarpa_)**
`;
exports[`example-369.md 1`] = `
**foo "*bar*" foo**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**foo "*bar*" foo**
**foo "_bar_" foo**
`;
@ -4017,7 +4017,7 @@ _foo _bar_ baz_
exports[`example-382.md 1`] = `
__foo_ bar_
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\\_*foo* bar_
\\__foo_ bar_
`;
@ -4222,7 +4222,7 @@ foo **\\_**
exports[`example-413.md 1`] = `
**foo*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\\**foo*
\\*_foo_
`;
@ -4299,7 +4299,7 @@ foo **\\***
exports[`example-425.md 1`] = `
__foo_
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\\_*foo*
\\__foo_
`;
@ -4320,7 +4320,7 @@ ___foo__
exports[`example-428.md 1`] = `
____foo_
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
\\_*__foo*
\\____foo_
`;
@ -4439,21 +4439,21 @@ exports[`example-444.md 1`] = `
exports[`example-445.md 1`] = `
*[bar*](/url)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*[bar*](/url)
_[bar_](/url)
`;
exports[`example-446.md 1`] = `
_foo [bar_](/url)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*foo [bar*](/url)
_foo [bar_](/url)
`;
exports[`example-447.md 1`] = `
*<img src="foo" title="*"/>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*<img src="foo" title="*"/>
_<img src="foo" title="_"/>
`;
@ -4474,14 +4474,14 @@ __<a href="__">
exports[`example-450.md 1`] = `
*a \`*\`*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*a \`*\`\\*
_a \`_\`\\*
`;
exports[`example-451.md 1`] = `
_a \`_\`_
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*a \`*\`_
_a \`_\`_
`;
@ -4747,7 +4747,7 @@ exports[`example-486.md 1`] = `
exports[`example-487.md 1`] = `
*[foo*](/uri)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*[foo*](/uri)
_[foo_](/uri)
`;
@ -4868,7 +4868,7 @@ exports[`example-500.md 1`] = `
[ref]: /uri
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*[foo*][ref]
_[foo_][ref]
[ref]: /uri
@ -5208,7 +5208,7 @@ exports[`example-530.md 1`] = `
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[foo*]: /url
*[foo*]
_[foo_]
`;