Sha256: c0d81c5b30e7408aac5a6b4507b5b103d1206d46db9203ee72c2ea39fa3043b0

Contents?: true

Size: 1.39 KB

Versions: 24

Compression:

Stored size: 1.39 KB

Contents

"use strict";
const path = require("path");
const reSyntaxCSS = /^(?:post)?css$/i;

function cssSyntax () {
	return {
		stringify: require("postcss/lib/stringify"),
		parse: require("postcss/lib/parse"),
	};
}

function normalize (syntax) {
	if (!syntax.parse) {
		syntax = {
			parse: syntax,
		};
	}
	return syntax;
}

function requireSyntax (syntax) {
	if (reSyntaxCSS.test(syntax)) {
		return cssSyntax();
	} else if (/^sugarss$/i.test(syntax)) {
		syntax = "sugarss";
	} else if (path.isAbsolute(syntax) || syntax[0] === ".") {
		syntax = path.resolve(syntax);
	} else {
		syntax = syntax.toLowerCase().replace(/^(?:postcss-)?(\w+)/i, "postcss-$1");
	}
	return normalize(require(syntax));
}

function getSyntax (lang, opts) {
	let syntax;
	lang = lang || "css";
	if (opts.syntax.config[lang]) {
		syntax = opts.syntax.config[lang];
		if (typeof syntax === "string") {
			if (syntax !== lang && opts.syntax.config[syntax]) {
				return getSyntax(syntax, opts);
			}
			syntax = requireSyntax(syntax);
		} else {
			syntax = normalize(syntax);
		}
	} else if (reSyntaxCSS.test(lang)) {
		syntax = cssSyntax();
	} else {
		return requireSyntax(lang);
	}
	if (!syntax.stringify) {
		if (reSyntaxCSS.test(lang)) {
			syntax.stringify = require("postcss/lib/stringify");
		} else {
			syntax.stringify = getSyntax(null, opts).stringify;
		}
	}
	opts.syntax.config[lang] = syntax;
	return syntax;
}

module.exports = getSyntax;

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
trusty-cms-6.3.1 node_modules/postcss-syntax/get-syntax.js
trusty-cms-5.0.7 node_modules/postcss-syntax/get-syntax.js
trusty-cms-5.0.6 node_modules/postcss-syntax/get-syntax.js
trusty-cms-5.0.5 node_modules/postcss-syntax/get-syntax.js
trusty-cms-5.0.4 node_modules/postcss-syntax/get-syntax.js
trusty-cms-5.0.3 node_modules/postcss-syntax/get-syntax.js
trusty-cms-5.0.2 node_modules/postcss-syntax/get-syntax.js
trusty-cms-5.0.1 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.3.5 node_modules/postcss-syntax/get-syntax.js
trusty-cms-5.0.0 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.3.4 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.3.3 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.3.2 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.3.1 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.3 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.2.3 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.2.2 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.2.1 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.2 node_modules/postcss-syntax/get-syntax.js
trusty-cms-4.1.9 node_modules/postcss-syntax/get-syntax.js