Output strings with the minimum amount of escaped quotes (#390)

* Add tests for quotes

* Update test snapshots

* Output strings with the minimum amount of escaped quotes

* Update test snapshots

* Move tests/prettier/quotes.js into tests/quotes/strings.js

* Update test snapshots
This commit is contained in:
Simon Lydell authored and Christopher Chedeau committed 2017-01-22 12:32:43 -08:00
1 parent e31203f4bf
commit 8ed75acf46
4 files changed
+336 -115

No files matched your search

+220 -56
View File
@@ -29,95 +29,259 @@ function b(object, key) {
`;
exports[`test strings.js 1`] = `
"\"abc\"
"// Every string will be changed to double quotes, unless we end up with fewer
// escaped quotes by using single quotes. (Vice versa if the \"singleQuote\"
// option is true).
//
// Note that even if a string already has the correct enclosing quotes, it is
// still processed in order to remove unnecessarily escaped quotes within it,
// for consistency.
// Simple strings.
\"abc\"
\'abc\'
// Escape.
\'\\0\'
// Emoji.
\'🐶\'
// Empty string.
\"\"
\'\'
// Single double quote.
\"\\\"\"
\'\"\'
// Single single quote.
\"\'\"
\'\\\'\'
\'\"\'
\'\\\"\'
\'\\\\\"\'
\"\'\"
// Unnecessary escapes.
\"\\\'\"
\"\\\\\'\"
\'\\\"\'
\"\'\\\"\"
\'\\\'\"\'
// One of each.
\"\\\"\'\"
\'\"\\\'\'
// One of each with unnecessary escapes.
\"\\\"\\\'\"
\'\\\"\\\'\'
// More double quotes than single quotes.
\"\\\"\'\\\"\"
\'\"\\\'\"\'
// More single quotes than double quotes.
\"\\\"\'\'\"
\'\"\\\'\\\'\'
// Two of each.
\"\\\"\\\"\'\'\"
\'\"\"\\\'\\\'\'
// Single backslash.
\'\\\\\'
\"\\\\\"
\'\\0\'
\'🐶\'
// Backslases.
\"\\\"\\\\\\\"\\\\\\\\\\\" \'\\\'\\\\\'\\\\\\\'\\\\\\\\\'\"
\'\\\'\\\\\\\'\\\\\\\\\\\' \"\\\"\\\\\"\\\\\\\"\\\\\\\\\"\'
// Somewhat more real-word example.
\"He\'s sayin\': \\\"How\'s it goin\'?\\\" Don\'t ask me why.\"
\'He\\\'s sayin\\\': \"How\\\'s it goin\\\'?\" Don\\\'t ask me why.\'
// Somewhat more real-word example 2.
\"var backslash = \\\"\\\\\\\", doubleQuote = \'\\\"\';\"
\'var backslash = \"\\\\\", doubleQuote = \\\'\"\\\';\'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Every string will be changed to double quotes, unless we end up with fewer
// escaped quotes by using single quotes. (Vice versa if the \"singleQuote\"
// option is true).
//
// Note that even if a string already has the correct enclosing quotes, it is
// still processed in order to remove unnecessarily escaped quotes within it,
// for consistency.
// Simple strings.
\"abc\";
\"abc\";
\"\'\";
\'\"\';
\'\\\"\';
\'\\\\\"\';
\"\'\";
\"\\\'\";
\"\\\\\'\";
\"\'\\\"\";
\"\'\\\"\";
\"\\\\\";
\"\\\\\";
// Escape.
\"\\0\";
\"🐶\";
// Emoji.
\"🐶\"; // Empty string.
\"\";
\"\"; // Single double quote.
\'\"\';
\'\"\'; // Single single quote.
\"\'\";
\"\'\"; // Unnecessary escapes.
\"\'\";
\'\"\'; // One of each.
\"\\\"\'\";
\"\\\"\'\"; // One of each with unnecessary escapes.
\"\\\"\'\";
\"\\\"\'\"; // More double quotes than single quotes.
\'\"\\\'\"\';
\'\"\\\'\"\'; // More single quotes than double quotes.
\"\\\"\'\'\";
\"\\\"\'\'\"; // Two of each.
\"\\\"\\\"\'\'\";
\"\\\"\\\"\'\'\"; // Single backslash.
\"\\\\\";
\"\\\\\"; // Backslases.
\"\\\"\\\\\\\"\\\\\\\\\\\" \'\'\\\\\'\\\\\'\\\\\\\\\'\";
\'\\\'\\\\\\\'\\\\\\\\\\\' \"\"\\\\\"\\\\\"\\\\\\\\\"\'; // Somewhat more real-word example.
\"He\'s sayin\': \\\"How\'s it goin\'?\\\" Don\'t ask me why.\";
\"He\'s sayin\': \\\"How\'s it goin\'?\\\" Don\'t ask me why.\"; // Somewhat more real-word example 2.
\'var backslash = \"\\\\\", doubleQuote = \\\'\"\\\';\';
\'var backslash = \"\\\\\", doubleQuote = \\\'\"\\\';\';
"
`;
exports[`test strings.js 2`] = `
"\"abc\"
"// Every string will be changed to double quotes, unless we end up with fewer
// escaped quotes by using single quotes. (Vice versa if the \"singleQuote\"
// option is true).
//
// Note that even if a string already has the correct enclosing quotes, it is
// still processed in order to remove unnecessarily escaped quotes within it,
// for consistency.
// Simple strings.
\"abc\"
\'abc\'
// Escape.
\'\\0\'
// Emoji.
\'🐶\'
// Empty string.
\"\"
\'\'
// Single double quote.
\"\\\"\"
\'\"\'
// Single single quote.
\"\'\"
\'\\\'\'
\'\"\'
\'\\\"\'
\'\\\\\"\'
\"\'\"
// Unnecessary escapes.
\"\\\'\"
\"\\\\\'\"
\'\\\"\'
\"\'\\\"\"
\'\\\'\"\'
// One of each.
\"\\\"\'\"
\'\"\\\'\'
// One of each with unnecessary escapes.
\"\\\"\\\'\"
\'\\\"\\\'\'
// More double quotes than single quotes.
\"\\\"\'\\\"\"
\'\"\\\'\"\'
// More single quotes than double quotes.
\"\\\"\'\'\"
\'\"\\\'\\\'\'
// Two of each.
\"\\\"\\\"\'\'\"
\'\"\"\\\'\\\'\'
// Single backslash.
\'\\\\\'
\"\\\\\"
\'\\0\'
\'🐶\'
// Backslases.
\"\\\"\\\\\\\"\\\\\\\\\\\" \'\\\'\\\\\'\\\\\\\'\\\\\\\\\'\"
\'\\\'\\\\\\\'\\\\\\\\\\\' \"\\\"\\\\\"\\\\\\\"\\\\\\\\\"\'
// Somewhat more real-word example.
\"He\'s sayin\': \\\"How\'s it goin\'?\\\" Don\'t ask me why.\"
\'He\\\'s sayin\\\': \"How\\\'s it goin\\\'?\" Don\\\'t ask me why.\'
// Somewhat more real-word example 2.
\"var backslash = \\\"\\\\\\\", doubleQuote = \'\\\"\';\"
\'var backslash = \"\\\\\", doubleQuote = \\\'\"\\\';\'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Every string will be changed to double quotes, unless we end up with fewer
// escaped quotes by using single quotes. (Vice versa if the \"singleQuote\"
// option is true).
//
// Note that even if a string already has the correct enclosing quotes, it is
// still processed in order to remove unnecessarily escaped quotes within it,
// for consistency.
// Simple strings.
\'abc\';
\'abc\';
\"\'\";
\'\"\';
\'\\\"\';
\'\\\\\"\';
\"\'\";
\"\\\'\";
\"\\\\\'\";
\'\\\'\"\';
\'\\\'\"\';
\'\\\\\';
\'\\\\\';
// Escape.
\'\\0\';
\'🐶\';
// Emoji.
\'🐶\'; // Empty string.
\'\';
\'\'; // Single double quote.
\'\"\';
\'\"\'; // Single single quote.
\"\'\";
\"\'\"; // Unnecessary escapes.
\"\'\";
\'\"\'; // One of each.
\'\"\\\'\';
\'\"\\\'\'; // One of each with unnecessary escapes.
\'\"\\\'\';
\'\"\\\'\'; // More double quotes than single quotes.
\'\"\\\'\"\';
\'\"\\\'\"\'; // More single quotes than double quotes.
\"\\\"\'\'\";
\"\\\"\'\'\"; // Two of each.
\'\"\"\\\'\\\'\';
\'\"\"\\\'\\\'\'; // Single backslash.
\'\\\\\';
\'\\\\\'; // Backslases.
\"\\\"\\\\\\\"\\\\\\\\\\\" \'\'\\\\\'\\\\\'\\\\\\\\\'\";
\'\\\'\\\\\\\'\\\\\\\\\\\' \"\"\\\\\"\\\\\"\\\\\\\\\"\'; // Somewhat more real-word example.
\"He\'s sayin\': \\\"How\'s it goin\'?\\\" Don\'t ask me why.\";
\"He\'s sayin\': \\\"How\'s it goin\'?\\\" Don\'t ask me why.\"; // Somewhat more real-word example 2.
\'var backslash = \"\\\\\", doubleQuote = \\\'\"\\\';\';
\'var backslash = \"\\\\\", doubleQuote = \\\'\"\\\';\';
"
`;
+58 -10
View File
@@ -1,21 +1,69 @@
// Every string will be changed to double quotes, unless we end up with fewer
// escaped quotes by using single quotes. (Vice versa if the "singleQuote"
// option is true).
//
// Note that even if a string already has the correct enclosing quotes, it is
// still processed in order to remove unnecessarily escaped quotes within it,
// for consistency.
// Simple strings.
"abc"
'abc'
// Escape.
'\0'
// Emoji.
'🐶'
// Empty string.
""
''
// Single double quote.
"\""
'"'
// Single single quote.
"'"
'\''
'"'
'\"'
'\\"'
"'"
// Unnecessary escapes.
"\'"
"\\'"
'\"'
"'\""
'\'"'
// One of each.
"\"'"
'"\''
// One of each with unnecessary escapes.
"\"\'"
'\"\''
// More double quotes than single quotes.
"\"'\""
'"\'"'
// More single quotes than double quotes.
"\"''"
'"\'\''
// Two of each.
"\"\"''"
'""\'\''
// Single backslash.
'\\'
"\\"
'\0'
'🐶'
// Backslases.
"\"\\\"\\\\\" '\'\\'\\\'\\\\'"
'\'\\\'\\\\\' "\"\\"\\\"\\\\"'
// Somewhat more real-word example.
"He's sayin': \"How's it goin'?\" Don't ask me why."
'He\'s sayin\': "How\'s it goin\'?" Don\'t ask me why.'
// Somewhat more real-word example 2.
"var backslash = \"\\\", doubleQuote = '\"';"
'var backslash = "\\", doubleQuote = \'"\';'
@@ -30,10 +30,10 @@ exports[`test strings.js 1`] = `
\"abc\",
\"\'\",
\'\"\',
\'\\\"\',
\'\"\',
\'\\\\\"\',
\"\'\",
\"\\\'\",
\"\'\",
\"\\\\\'\",
\"\'\\\"\",
\"\'\\\"\",