summaryrefslogtreecommitdiff
path: root/node_modules/postcss-import/lib/process-content.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss-import/lib/process-content.js')
-rw-r--r--node_modules/postcss-import/lib/process-content.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/node_modules/postcss-import/lib/process-content.js b/node_modules/postcss-import/lib/process-content.js
new file mode 100644
index 0000000..ec413e0
--- /dev/null
+++ b/node_modules/postcss-import/lib/process-content.js
@@ -0,0 +1,59 @@
+"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?.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)
+ })
+}