text-quotes.js 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;
  2. var LOCAL_PREFIX_PATTERN = /^local\(/i;
  3. var QUOTED_PATTERN = /^('.*'|".*")$/;
  4. var QUOTED_BUT_SAFE_PATTERN = /^['"][a-zA-Z][a-zA-Z\d\-_]+['"]$/;
  5. // eslint-disable-next-line max-len
  6. var GENERIC_FONT_FAMILY_PATTERN = /^['"](?:cursive|default|emoji|fangsong|fantasy|inherit|initial|math|monospace|revert|revert-layer|sans-serif|serif|system-ui|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|unset)['"]$/;
  7. var plugin = {
  8. level1: {
  9. value: function textQuotes(name, value, options) {
  10. if ((name == 'font-family' || name == 'font') && GENERIC_FONT_FAMILY_PATTERN.test(value)) {
  11. return value;
  12. }
  13. if (!options.level[OptimizationLevel.One].removeQuotes) {
  14. return value;
  15. }
  16. if (!QUOTED_PATTERN.test(value) && !LOCAL_PREFIX_PATTERN.test(value)) {
  17. return value;
  18. }
  19. return QUOTED_BUT_SAFE_PATTERN.test(value)
  20. ? value.substring(1, value.length - 1)
  21. : value;
  22. }
  23. }
  24. };
  25. module.exports = plugin;