quotes.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. module.exports = {
  2. name: 'quotes',
  3. syntax: ['css', 'less', 'sass', 'scss'],
  4. accepts: { string: /^single|double$/ },
  5. /**
  6. * Processes tree node.
  7. * @param {node} node
  8. */
  9. process: function(node) {
  10. if (!node.is('string')) return;
  11. var value = this.getValue('quotes');
  12. if (node.content[0] === '"' && value === 'single') {
  13. node.content = node.content
  14. .replace(/\\"/g, '"') // unescape all escaped double quotes
  15. .replace(/([^\\])'/g, '$1\\\'') // escape all the single quotes
  16. .replace(/^"|"$/g, '\''); // replace the first and the last quote
  17. } else if (node.content[0] === '\'' && value === 'double') {
  18. node.content = node.content
  19. .replace(/\\'/g, '\'') // unescape all escaped single quotes
  20. .replace(/([^\\])"/g, '$1\\\"') // escape all the double quotes
  21. .replace(/^'|'$/g, '"'); // replace the first and the last quote
  22. }
  23. },
  24. /**
  25. * Detects the value of an option at the tree node.
  26. *
  27. * @param {node} node
  28. */
  29. detect: function(node) {
  30. if (!node.is('string')) return;
  31. if (node.content[0] === '"') {
  32. return 'double';
  33. } else if (node.content[0] === '\'') {
  34. return 'single';
  35. }
  36. }
  37. };