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.
37 lines
859 B
37 lines
859 B
"use strict"; |
|
const stringify = require("./stringify"); |
|
const parseStyle = require("./parse-style"); |
|
const normalOpts = require("./normal-opts"); |
|
|
|
module.exports = (extract, lang) => { |
|
const defaultConfig = { |
|
postcss: "css", |
|
stylus: "css", |
|
babel: "jsx", |
|
xml: "html", |
|
}; |
|
function parse (source, opts) { |
|
source = source.toString(); |
|
opts = normalOpts(opts, this); |
|
const document = parseStyle(source, opts, extract(source, opts)); |
|
document.source.lang = lang; |
|
return document; |
|
} |
|
|
|
function initSyntax (syntax) { |
|
syntax.stringify = stringify.bind(syntax); |
|
syntax.parse = parse.bind(syntax); |
|
syntax.extract = extract.bind(syntax); |
|
return syntax; |
|
} |
|
|
|
function syntax (config) { |
|
return initSyntax({ |
|
config: Object.assign({}, defaultConfig, config), |
|
}); |
|
} |
|
|
|
initSyntax(syntax); |
|
syntax.config = defaultConfig; |
|
return syntax; |
|
};
|
|
|