lib/adapters/codemirror.js (30 lines of code) (raw):

const mkdirp = require("mkdirp") const fs = require("fs") const sass = require("node-sass") const utils = require("../utils") module.exports = (theme) => { mkdirp.sync(`build/codemirror`) let template = fs.readFileSync("./lib/templates/codemirror.scss").toString() let output = utils.header(theme) template = template.replace(new RegExp("\\${theme}", "g"), theme.filename) theme.settings.forEach((setting) => { const settings = setting.settings const scope = setting.scope // Editor settings if (!scope) { Object.keys(settings).forEach((key) => { template = template.replace(new RegExp("\\${" + key + "}", "g"), settings[key]) }) output += template } else { const singleScope = scope.split(", ")[0] if (singleScope && !singleScope.match(/[\.\s\-]/)) { output += `\n.cm-s-${theme.filename} .cm-${singleScope} { ${utils.declarations(settings)} }` } } }) const result = sass.renderSync({ data: output, includePaths: ["./node_modules"] }) fs.writeFileSync(`./build/codemirror/codemirror-${theme.filename}-theme.css`, result.css) }