You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							59 lines
						
					
					
						
							1.3 KiB
						
					
					
				| "use strict" | |
| 
 | |
| // builtin tooling | |
| const path = require("path") | |
| 
 | |
| // placeholder tooling | |
| let sugarss | |
| 
 | |
| module.exports = function processContent( | |
|   result, | |
|   content, | |
|   filename, | |
|   options, | |
|   postcss | |
| ) { | |
|   const { plugins } = options | |
|   const ext = path.extname(filename) | |
| 
 | |
|   const parserList = [] | |
| 
 | |
|   // SugarSS support: | |
|   if (ext === ".sss") { | |
|     if (!sugarss) { | |
|       try { | |
|         sugarss = require("sugarss") | |
|       } catch {} // Ignore | |
|     } | |
|     if (sugarss) | |
|       return runPostcss(postcss, content, filename, plugins, [sugarss]) | |
|   } | |
| 
 | |
|   // Syntax support: | |
|   if (result.opts.syntax && result.opts.syntax.parse) { | |
|     parserList.push(result.opts.syntax.parse) | |
|   } | |
| 
 | |
|   // Parser support: | |
|   if (result.opts.parser) parserList.push(result.opts.parser) | |
|   // Try the default as a last resort: | |
|   parserList.push(null) | |
| 
 | |
|   return runPostcss(postcss, content, filename, plugins, parserList) | |
| } | |
| 
 | |
| function runPostcss(postcss, content, filename, plugins, parsers, index) { | |
|   if (!index) index = 0 | |
|   return postcss(plugins) | |
|     .process(content, { | |
|       from: filename, | |
|       parser: parsers[index], | |
|     }) | |
|     .catch(err => { | |
|       // If there's an error, try the next parser | |
|       index++ | |
|       // If there are no parsers left, throw it | |
|       if (index === parsers.length) throw err | |
|       return runPostcss(postcss, content, filename, plugins, parsers, index) | |
|     }) | |
| }
 | |
| 
 |