37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.meta = exports.default = void 0;
|
|
var _postcss_plugin = _interopRequireDefault(require("../helpers/postcss_plugin"));
|
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
/** @module */
|
|
|
|
/**
|
|
* Marpit PostCSS meta plugin.
|
|
*
|
|
* Parse CSS comment written in the format of `@key value`.
|
|
*
|
|
* @function meta
|
|
* @param {Object} [opts]
|
|
* @param {Object} [opts.metaType] An object for defined types for metadata.
|
|
*/
|
|
const meta = exports.meta = (0, _postcss_plugin.default)('marpit-postcss-meta', (opts = {}) => (css, {
|
|
result
|
|
}) => {
|
|
const metaType = opts.metaType || {};
|
|
result.marpitMeta = result.marpitMeta || {};
|
|
css.walkComments(comment => {
|
|
comment.text.slice(0).replace(/^[*!\s]*@([\w-]+)\s+(.+)$/gim, (_, metaName, value) => {
|
|
if (metaType[metaName] === Array) {
|
|
// Array meta
|
|
result.marpitMeta[metaName] = [...(result.marpitMeta[metaName] || []), value];
|
|
} else {
|
|
// String meta (default)
|
|
result.marpitMeta[metaName] = value;
|
|
}
|
|
});
|
|
});
|
|
});
|
|
var _default = exports.default = meta; |