Page MenuHomeSoftware Heritage

dump-highlightjs-languages-data-plugin.js
No OneTemporary

dump-highlightjs-languages-data-plugin.js

/**
* Copyright (C) 2020-2022 The Software Heritage developers
* See the AUTHORS file at the top-level directory of this distribution
* License: GNU Affero General Public License version 3, or any later version
* See top-level LICENSE file for more information
*/
'use strict';
const fs = require('fs');
const path = require('path');
global.hljs = require('highlight.js');
require('highlightjs-4d/dist/4d.min');
require('highlightjs-sap-abap/dist/abap.min');
require('highlightjs-alan/dist/alan.min');
require('highlightjs-blade/dist/blade.min');
require('highlightjs-chaos/dist/chaos.min');
require('highlightjs-chapel/dist/chapel.min');
require('highlightjs-cshtml-razor/dist/cshtml-razor.min');
require('highlightjs-cpcdos/dist/cpc-highlight.min');
require('highlightjs-cypher/dist/cypher.min');
require('highlightjs-dafny/dist/dafny.min');
require('highlightjs-dylan/dist/dylan.min');
require('highlightjs-eta/dist/eta.min');
require('highlightjs-extempore/dist/extempore.min');
require('highlightjs-gdscript/dist/gdscript.min');
require('highlightjs-gf/dist/gf.min');
require('highlightjs-gsql/dist/gsql.min');
require('highlightjs-hlsl/dist/hlsl.min');
require('highlightjs-jolie/dist/jolie.min');
hljs.registerLanguage('lean', require('highlightjs-lean'));
hljs.registerLanguage('lox', require('highlightjs-lox'));
require('highlightjs-mirc/mirc')(hljs);
hljs.registerLanguage('modelica', require('highlightjs-modelica'));
require('highlightjs-never/dist/never.min');
hljs.registerLanguage('octave', require('highlightjs-octave').default);
require('highlightjs-oz/dist/oz.min');
require('hightlightjs-papyrus/dist/papyrus.min');
require('highlightjs-qsharp/dist/qsharp.min');
require('highlightjs-redbol/dist/redbol.min');
require('highlightjs-robot')(hljs);
require('highlightjs-robots-txt/dist/robots-txt.min');
require('highlightjs-rpm-specfile')(hljs);
require('highlightjs-solidity/dist/solidity.min');
require('highlightjs-svelte/dist/svelte.min');
require('highlightjs-terraform')(hljs);
require('highlightjs-xsharp/dist/xsharp.min');
require('highlightjs-zenscript/dist/zenscript.min');
require('highlightjs-zig/dist/zig.min');
const stringify = require('json-stable-stringify');
// Simple webpack plugin to dump JSON data related to the set of
// programming languages supported by the highlightjs library.
// The JSON file is saved into swh-web static folder and will
// be consumed by the backend django application.
class DumpHighlightjsLanguagesDataPlugin {
apply(compiler) {
compiler.hooks.done.tap('DumpHighlightjsLanguagesDataPlugin', statsObj => {
const outputPath = statsObj.compilation.compiler.outputPath;
const hljsDataFile = path.join(outputPath, 'json/highlightjs-languages.json');
const languages = hljs.listLanguages();
const hljsLanguagesData = {'languages': languages};
const languageAliases = {};
for (const language of languages) {
const languageData = hljs.getLanguage(language);
if (!languageData.hasOwnProperty('aliases')) {
continue;
}
for (const alias of languageData.aliases) {
languageAliases[alias] = language;
languageAliases[alias.toLowerCase()] = language;
}
}
hljsLanguagesData['languages_aliases'] = languageAliases;
fs.writeFileSync(hljsDataFile, stringify(hljsLanguagesData, {space: 4}));
});
}
};
module.exports = DumpHighlightjsLanguagesDataPlugin;

File Metadata

Mime Type
text/plain
Expires
Fri, Jul 4, 1:49 PM (5 d, 11 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3239034

Event Timeline