32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var OptimizationLevel = require('../../../options/optimization-level').OptimizationLevel;
 | |
| 
 | |
| var LOCAL_PREFIX_PATTERN = /^local\(/i;
 | |
| var QUOTED_PATTERN = /^('.*'|".*")$/;
 | |
| var QUOTED_BUT_SAFE_PATTERN = /^['"][a-zA-Z][a-zA-Z\d\-_]+['"]$/;
 | |
| // eslint-disable-next-line max-len
 | |
| 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)['"]$/;
 | |
| 
 | |
| var plugin = {
 | |
|   level1: {
 | |
|     value: function textQuotes(name, value, options) {
 | |
|       if ((name == 'font-family' || name == 'font') && GENERIC_FONT_FAMILY_PATTERN.test(value)) {
 | |
|         return value;
 | |
|       }
 | |
| 
 | |
|       if (!options.level[OptimizationLevel.One].removeQuotes) {
 | |
|         return value;
 | |
|       }
 | |
| 
 | |
|       if (!QUOTED_PATTERN.test(value) && !LOCAL_PREFIX_PATTERN.test(value)) {
 | |
|         return value;
 | |
|       }
 | |
| 
 | |
|       return QUOTED_BUT_SAFE_PATTERN.test(value)
 | |
|         ? value.substring(1, value.length - 1)
 | |
|         : value;
 | |
|     }
 | |
|   }
 | |
| };
 | |
| 
 | |
| module.exports = plugin;
 |