Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const fs = require("fs");
- const path = require("path");
- const cyrillicToTransit = require("cyrillic-to-translit-js");
- const { paths } = require("../../lib/config");
- const { languages, clm, structure } = require(paths.clm.config);
- const { getFullId } = require("../../lib/util/sl-id-parser");
- const webpackSlideBuild = require("../../lib/webpack-slide-builder");
- const thumbMaker = require("../../lib/thumb-maker");
- const archiveMaker = require("../../lib/archive-maker");
- module.exports = async (api, projectOptions, args, slidesToBuild, clmName) => {
- let lang;
- for (let sl of slidesToBuild) {
- const htmlContent = `<!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta http-equiv="X-UA-Compatible" content="ie=edge" />
- <title>Document</title>
- </head>
- <body>
- <div id="div"></div>
- <script>
- var url = window.location.href;
- var re = /index.html/gi;
- var newstr = url.replace(re, "${clm.productId}_${sl.lang.toUpperCase()}_${
- structure[0].id
- }.html");
- window.location.href = newstr;
- </script>
- </body>
- </html>`;
- lang = sl.lang;
- fs.writeFile(
- `${path.join(paths.dist, clmName, sl.lang)}/index.html`,
- htmlContent,
- error => {
- /* handle error */
- }
- );
- const outSlName = getFullId(sl.id, sl.lang);
- process.env.VUE_APP_CLM = "pharma-touch";
- process.env.VUE_APP_SL_ID = sl.id;
- process.env.VUE_APP_SL_PATH = sl.path;
- process.env.VUE_APP_SL_LANG = sl.lang;
- process.env.VUE_APP_OUT_DIR_PATH = path.join(paths.dist, clmName, sl.lang);
- process.env.VUE_APP_OUT_HTML_NAME = outSlName;
- /** Webpack Build **/
- await webpackSlideBuild(api, projectOptions);
- if (!args.options["no-screens"] && args.options["local"]) {
- await require("../../lib/screens-maker")(sl, false);
- } else if (!args.options["no-screens"] && !args.options["local"]) {
- await require("../../lib/screens-maker")(sl, true);
- }
- await thumbMaker({
- width: 435,
- height: 272,
- thumbName: `${process.env.VUE_APP_SL_ID}.jpg`,
- thumbPath: path.join(
- paths.src,
- "components",
- "QuadraMenu",
- "images",
- "map"
- )
- });
- fs.readdirSync(`${path.join(paths.dist, clmName, lang)}/js`).forEach(
- file => {
- let pathToJS = `${path.join(paths.dist, clmName, lang)}/js/${file}`;
- let JS = fs.readFileSync(pathToJS, "utf8");
- var strict = JS.replace(/"use strict"/g, " ");
- fs.writeFileSync(pathToJS, strict, "utf8");
- JS = fs.readFileSync(pathToJS, "utf8");
- var es = JS.replace(/let /g, "var ");
- fs.writeFileSync(pathToJS, es, "utf8");
- }
- );
- }
- for (let lang of languages.filter(lang => args.lang.test(lang))) {
- const outBuildDir = path.join(paths.dist, clmName, lang);
- /** Create structure.json **/
- createStructureForPT(outBuildDir, lang);
- /** Create Archive **/
- await archiveMaker({
- contentPath: outBuildDir,
- archiveName: `${clm.productId}_${lang.toUpperCase()}`,
- archivePath: path.join(paths.zip, clmName)
- });
- }
- };
- /**
- * Create special Json for pharma-touch
- *
- * @param outBuildDir
- * @param lang
- */
- function createStructureForPT(outBuildDir, lang) {
- const json = {};
- json.slides = structure.map((sl, index) => ({
- mapname: clm.productId,
- name: sl.name ? getTransitName(sl.name, lang) : sl.id,
- filename: getFullId(sl.id, lang) + ".html",
- preview: getFullId(sl.id, lang) + ".jpg",
- ishidden: 0,
- position: index + 1
- }));
- fs.writeFileSync(
- path.join(outBuildDir, "slides.json"),
- JSON.stringify(json, null, " ")
- );
- }
- /**
- * Return translit name
- *
- * @param name
- * @param lang
- * @returns {string}
- */
- function getTransitName(name, lang) {
- name = typeof name === "string" ? name : name[lang];
- switch (lang) {
- case "ua":
- return cyrillicToTransit({ preset: "uk" }).transform(name);
- case "ru":
- return cyrillicToTransit({ preset: "ru" }).transform(name);
- default:
- return name;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement