|
|
|
/**
|
|
|
|
* Preprocesses html-files
|
|
|
|
*/
|
|
|
|
const fs = require("fs"),
|
|
|
|
{ JSDOM } = require('jsdom'),
|
|
|
|
// ressources
|
|
|
|
defaultCss = "/glob/style.sass", // the default style that is embedded in every html
|
|
|
|
defaultJs = "/glob/script.js"; // the default script that is embedded in every html
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a css DOM element with href as source
|
|
|
|
* @param {Object} document A html DOM
|
|
|
|
* @param {String} href the source of the css file
|
|
|
|
* @return {Object} the Link Element
|
|
|
|
*/
|
|
|
|
function createLinkElement(document, href) {
|
|
|
|
let link = document.createElement('link');
|
|
|
|
link.setAttribute("rel", "stylesheet");
|
|
|
|
link.setAttribute("type", "text/css");
|
|
|
|
link.setAttribute("href", href);
|
|
|
|
return link;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a javascript Script DOM element with src as source
|
|
|
|
* @param {Object} document A html DOM
|
|
|
|
* @param {String} src the source of the javascript file
|
|
|
|
* @return {Object} the Script Element
|
|
|
|
*/
|
|
|
|
function createScriptLinkElement(document, src) {
|
|
|
|
let script = document.createElement("script");
|
|
|
|
script.setAttribute("type", "text/javascript");
|
|
|
|
script.setAttribute("src", src);
|
|
|
|
return script;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Formats the html string by adding a link to the standard css and to the standard javascript file.
|
|
|
|
* @return {String} A html-string that represents a document.
|
|
|
|
* @param filename
|
|
|
|
*/
|
|
|
|
exports.formatHtml = function (filename) {
|
|
|
|
let htmlstring = fs.readFileSync(filename);
|
|
|
|
try {
|
|
|
|
let dom = new JSDOM(htmlstring); // creates a dom from the html string
|
|
|
|
let document = dom.window.document;
|
|
|
|
let head = document.getElementsByTagName('head')[0]; // gets the documents head
|
|
|
|
head.prepend(createLinkElement(document, defaultCss)); // prepend the default css to the head
|
|
|
|
head.prepend(createScriptLinkElement(document, defaultJs)); // prepend the default script to the head
|
|
|
|
head.prepend(createScriptLinkElement(document, "/glob/jquery.js")); // prepend the JQuery to the head
|
|
|
|
head.prepend(createScriptLinkElement(document, "/glob/vue.js")); // prepend the Vue to the head
|
|
|
|
return dom.serialize(); // return a string of the document
|
|
|
|
} catch (error) {
|
|
|
|
console.error(error);
|
|
|
|
return htmlstring;
|
|
|
|
}
|
|
|
|
};
|