.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / postcss-html / lib / get-syntax.js
1 "use strict";
2
3 const cssSyntax = require("./css-syntax");
4 const extname = {
5         styl: "stylus",
6         sss: "sugarss",
7 };
8
9 function defaultConfig (opts, lang) {
10         let syntax;
11         if (lang === "scss" || lang === "sass" || lang === "less") {
12                 syntax = require("postcss-" + lang);
13         } else if (lang === "sugarss") {
14                 syntax = require("sugarss");
15         } else {
16                 syntax = cssSyntax(opts);
17         }
18         return syntax;
19 }
20
21 function getSyntax (opts, lang) {
22         if (!lang) {
23                 lang = opts.from && /\.(\w+)(?:\?.+)?$/.exec(opts.from);
24                 if (lang) {
25                         lang = lang[1].toLowerCase();
26                         lang = extname[lang] || lang;
27                 } else {
28                         lang = "css";
29                 }
30         }
31
32         let config = opts.syntax.config;
33
34         if (!config) {
35                 return defaultConfig(opts, lang);
36         }
37
38         if (typeof config === "function") {
39                 config = config(opts, lang);
40         }
41
42         if (config) {
43                 config = config[lang] || config.css || config;
44                 if (typeof config === "string") {
45                         config = require(config);
46                 }
47         } else {
48                 return defaultConfig(opts, lang);
49         }
50
51         return Object.assign(cssSyntax(opts), config);
52 }
53
54 module.exports = getSyntax;