Should parse nested quotes: . "foo 'bar' baz" 'foo 'bar' baz' .
“foo ‘bar’ baz”
‘foo ‘bar’ baz’
. Should not overlap quotes: . 'foo "bar' baz" .‘foo "bar’ baz"
. Should match quotes on the same level: . "foo *bar* baz" .“foo bar baz”
. Should handle adjacent nested quotes: . '"double in single"' "'single in double'" .‘“double in single”’
“‘single in double’”
. Should not match quotes on different levels: . *"foo* bar" "foo *bar"* *"foo* bar *baz"* ."foo bar"
"foo bar"
"foo bar baz"
. Smartquotes should not overlap with other tags: . *foo "bar* *baz" quux* .foo "bar baz" quux
. Should try and find matching quote in this case: . "foo "bar 'baz" ."foo “bar 'baz”
. Should not touch 'inches' in quotes: . "Monitor 21"" and "Monitor"" .“Monitor 21"” and “Monitor”"
. Should render an apostrophe as a rsquo: . This isn't and can't be the best approach to implement this... .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 .users’ stuff
. Quotes between punctuation chars: . "(hai)". .“(hai)”.
. Quotes at the start/end of the tokens: . "*foo* bar" "foo *bar*" "*foo bar*" .“foo bar”
“foo bar”
“foo bar”
. Should treat softbreak as a space: . "this" and "that". "this" and "that". .“this” and “that”.
“this” and “that”.
. Should treat hardbreak as a space: . "this"\ and "that". "this" and\ "that". .“this”
and “that”.
“this” and
“that”.
The dog—“‘man’s’ best friend”
. Should parse quotes adjacent to code block, #677: . "test `code`" "`code` test" .“test code
”
“code
test”
“test
”
“
test”
“foo”
"foo"
"foo"
. Should not replace entities: . "foo" "foo" "foo" ."foo"
"foo"
"foo"
.