quotes.js.flow 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const schema = [
  2. {
  3. enum: ['double', 'single'],
  4. type: 'string',
  5. },
  6. ];
  7. const meta = {
  8. fixable: 'code',
  9. };
  10. const create = (context) => {
  11. const double = (context.options[0] || 'double') === 'double';
  12. const sourceCode = context.getSourceCode();
  13. return {
  14. StringLiteralTypeAnnotation(node) {
  15. if (double && sourceCode.text[node.range[0]] !== '"') {
  16. // double
  17. context.report({
  18. fix: (fixer) => [
  19. fixer.replaceTextRange([node.range[0], node.range[0] + 1], '"'),
  20. fixer.replaceTextRange([node.range[1] - 1, node.range[1]], '"'),
  21. ],
  22. message: 'String literals must use double quote.',
  23. node,
  24. });
  25. } else if (!double && sourceCode.text[node.range[0]] !== '\'') {
  26. // single
  27. context.report({
  28. fix: (fixer) => [
  29. fixer.replaceTextRange([node.range[0], node.range[0] + 1], '\''),
  30. fixer.replaceTextRange([node.range[1] - 1, node.range[1]], '\''),
  31. ],
  32. message: 'String literals must use single quote.',
  33. node,
  34. });
  35. }
  36. },
  37. };
  38. };
  39. export default {
  40. create,
  41. meta,
  42. schema,
  43. };