Should parse nested quotes: . “foo ‘bar’ baz”

‘foo ‘bar’ baz’ .

Should not overlap quotes: . ‘foo "bar’ baz" .

Should match quotes on the same level: . “foo bar baz” .

Should handle adjacent nested quotes: . ‘“double in single”’

“‘single in double’” .

Should not match quotes on different levels: . "foo bar"

“foo *bar”*

"foo bar baz" .

Smartquotes should not overlap with other tags: . foo "bar baz" quux .

Should try and find matching quote in this case: . "foo “bar 'baz” .

Should not touch ‘inches’ in quotes: . “Monitor 21”" and “Monitor”" .

Should render an apostrophe as a rsquo: . This isn‘t and can’t be the best approach to implement this... .

Apostrophe could end the word, that‘s why original smartypants replaces all of them as rsquo: . users’ stuff .

Quotes between punctuation chars:

. “(hai)”. .

Quotes at the start/end of the tokens: . “foo bar”

“foo bar

foo bar” .

Should treat softbreak as a space: . “this” and “that”.

“this” and “that”. .

Should treat hardbreak as a space: . “this”
and “that”.

“this” and
“that”. .

Should allow quotes adjacent to other punctuation characters, #643: . The dog---“‘man’s' best friend” .

Should parse quotes adjacent to code block, #677: . “test code

code test” .

Should parse quotes adjacent to inline html, #677: . “test

test” .