TransFlow/node_modules/highlight.js-async-webpack/src/gen.hljs.js

93 lines
3.3 KiB
JavaScript

/**
* @Author: HuaChao Chen <CHC>
* @Date: 2017-06-17T16:29:50+08:00
* @Email: chenhuachaoxyz@gmail.com
* @Filename: test.js
* @Last modified by: CHC
* @Last modified time: 2017-06-19T17:08:00+08:00
* @License: MIT
* @Copyright: 2017
*/
var fs = require('fs');
var path = require('path');
// var file = 'highlight.js'
var hljs = require('highlight.js');
// console.log(hljs.listLanguages());
// console.log(hljs.aliases);
function validFilename(str) {
var _res = '';
for (var i = 0; i < str.length; i++) {
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= '0' && str[i] <= '9')) {
_res += str[i];
}
else {
_res += '_';
}
}
return _res;
}
// var tmp = require('./node_modules/highlight.js/lib/languages/cpp.js')
// console.log(tmp(hljs));
// console.log(hljs);
fs.readdir(path.resolve(__dirname, '../node_modules/highlight.js/lib/languages'), function (err, files) {
var _files = [];
var _str_code = "var hljs = require('highlight.js/lib/highlight.js');\n";
for (var i = 0; i < files.length; i++) {
var _lang = files[i].substring(0, files[i].length - 3);
var __lang = validFilename(_lang);
_str_code += 'hljs.hljs_' + __lang + ' = function (dom, callback) {\n';
_str_code += ' require.ensure([], function() {\n';
_str_code += " hljs.registerLanguage('" + _lang + "', require('highlight.js/lib/languages/" + files[i] + "'));\n"
_str_code += ' hljs.highlightBlock(dom);\n';
_str_code += ' if (callback) callback();\n';
_str_code += " }, 'hljs." + __lang + "');\n"
_str_code += '}\n\n';
// _files['hljs.' + __lang] = _lang;
_files.push('hljs.' + __lang)
}
_str_code += 'export default hljs';
fs.writeFile(path.resolve(__dirname, './async.hljs.js'), _str_code, function() {
})
var _str_files = 'module.exports = [\n';
for (var i = 0; i < _files.length; i++) {
_str_files += "'" + _files[i] + "', ";
}
_str_files += ']';
fs.writeFile(path.resolve(__dirname, './file.lang.hljs.js'), _str_files, function() {
})
var _ = {};
for (var i = 0; i < files.length; i++) {
var _module = require('highlight.js/lib/languages/' + files[i]);
var _res = _module(hljs);
var _lang = files[i].substring(0, files[i].length - 3);
var __lang = validFilename(_lang);
_[_lang] = __lang;
if (_res.aliases) {
for (var j = 0; j < _res.aliases.length; j++) {
_[_res.aliases[j]] = __lang;
}
}
}
var _lang_obj = 'export default {\n';
for (var i in _) {
if ( _.hasOwnProperty(i)) {
// _lang_obj += " '" + i + "': '" + _[i] + "',\n";
_lang_obj += " '" + i + "': '" + _[i] + "',\n";
// _lang_obj += " '" + i + "': '" + _[i] + "',\n";
// console.log(i);
}
}
_lang_obj += '}'
// console.log(_);
// var _string = JSON.stringify(_);
fs.writeFile(path.resolve(__dirname, './lang.hljs.js'), _lang_obj, function(e){
})
// console.log(files[0]);
// var x = require('./node_modules/highlight.js/lib/languages/' + files[0]);
// console.log(x(hljs));
// console.log(files.length);
})