rehype-prism-template
Version:
rehype plugin to highlight code blocks in HTML with Prism
62 lines (48 loc) • 1.43 kB
JavaScript
/* eslint-disable no-console */
const fs = require('fs');
const _ = require('underscore');
const template = fs.readFileSync(__dirname + '/template.js').toString('utf8');
const languages = require('./languages');
const writeFile = fileText => {
fs.writeFile('./index.js', fileText, err => {
if (err) {
return console.error(`${err.message}`);
}
console.log('New languages are registered.');
});
};
const args = process.argv.slice(2).filter(arg => arg[0] !== '-');
const parse = (args, write = true) => {
let register = '';
let refractor = '';
if (!args.length) return null;
if (args[0] === 'all') {
refractor = `const refractor = require('refractor');`;
} else {
args.forEach(lang => {
if (!languages.includes(lang)) {
console.error(`${lang} is an invalid language`);
return;
} else {
register += `refractor.register(require('refractor/lang/${lang}.js'));\n `;
console.log(`${lang} is registered.`);
}
refractor = `const refractor = require('refractor/core');`.trim();
});
}
const data = {
languages: register.trim(),
refractor: refractor
};
const parsedTemplate = _.template(template);
const compiledTemplate = parsedTemplate(data);
if (write) {
writeFile(compiledTemplate);
}
return compiledTemplate;
};
if (args.length) {
parse(args);
}
module.exports = parse;