/**
 *   АРХИВ ПУБЛИКАЦИЙ ОБУЧАЮЩИХСЯ И СОТРУДНИКОВ СУНЦ УрФУ
 *   Copyright © 2021, А.М.Гольдин. ISC license
 */
"use strict";

// Работа с разрешенными тегами и вырезание остальных в элементе article
let artInner = document.querySelector("article").innerHTML;
const allowTags = [
   "br", "s", "b", "i", "h", "nobr", "pre", "tt", "table", "tr", "th", "td",
   "sub", "sup" 
];
for (let tag of allowTags) {
   let re1 = new RegExp(`<${tag}>`,'g'), re2 = new RegExp(`</${tag}>`,'g');
   artInner = artInner.replace(re1, "a¤" + tag).replace(re2, "b¤" + tag);
}
artInner = artInner.replace(/<[\w ='"-]*?>|<\/[\w ='"-]*?>/g, '');
for (let tag of allowTags) {
   let re3 = new RegExp(`a¤${tag}`,'g'), re4 = new RegExp(`b¤${tag}`,'g');
   artInner = artInner.replace(re3, `<${tag}>`).replace(re4, `</${tag}>`)
      .replace(/<h>/g, "<h2>").replace(/<\/h>/g, "</h2>");
}
document.querySelector("article").innerHTML = artInner;

// Запоминание тегов pre
let pre = document.querySelectorAll("pre"), preArr = [];
for (let i=0; i<pre.length; i++)
   preArr[i] = pre[i].innerHTML.trimEnd().replace(/^(\r|\n|\s)*\n/g, '');

// Формирование абзацев
const replPar = elem => {
   let cont = document.querySelector(elem).innerHTML.trim();
   cont = cont.replace(/ {2,}/g, ' ').replace(/\r/g, '')
              .replace(/\n | \n/g, '\n').replace(/\n{2,}/g, "</p><p>");         
   document.querySelector(elem).innerHTML = `<p>${cont}</p>`;
}
for (let e of ["header","aside","article","section","footer"]) replPar(e);

// Восстановление тегов pre
for (let i=0; i<pre.length; i++)
   document.querySelectorAll("pre")[i].innerHTML = preArr[i];

// Список литературы
let bibl = document.querySelector("section").innerHTML.trim();
if (bibl.replace(/\s|<p>|<\/p>/g, '')) bibl = "<h6>Литература</h6>" + bibl;
document.querySelector("section").innerHTML = bibl;

let bd = document.body.innerHTML;

// Вставка картинок
bd = bd.replace(
   /\[img ([0-9a-z_\-\?\/\:\.]+\.)(jpg|png|svg) ([0-9]{1,2}) *(.*?)\]/g,
   "<div class='img'><img src='$1$2' style='width:$3cm'><h5>$4</h5></div>"
);

// Замена кавычек, тире и пробелов перед сносками, удаление пустых абзацев
bd = bd.replace(/&lt;&lt;/g, '«').replace(/&gt;&gt;/g, '»')
       .replace(/ --/g, "&nbsp;&mdash;").replace(/--/g, "&mdash;")
       .replace(/ <s>/g, "<s>").replace(/<p><\/p>/g, '');

// Выключенные по центру абзацы
bd = bd.replace(/<p>==/g, "<p class='c'>");

document.body.innerHTML = bd;

// Формирование сносок
let notes = document.querySelectorAll('s');
if (notes.length) {
   let notesInner = "<h6>Примечания</h6>";
   for (let i=1; i<=notes.length; i++) {
      notesInner += `<p><sup>${i}</sup>&nbsp;${notes[i-1].innerHTML}</p>`
      notes[i-1].outerHTML = `<sup>${i}</sup>`;
   }
   let notesElem = document.createElement("div");
   notesElem.innerHTML = notesInner;
   document.body.insertBefore(notesElem, document.querySelector("footer"));
}
