parsing.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. // transformer les balises [...] en <div class="..."> si ça correspond aux classes prédéfinies
  2. let baliseWords = [
  3. 'labeur',
  4. 'free',
  5. 'temps',
  6. 'moment',
  7. 'latour',
  8. 'lampe',
  9. 'bibliographie',
  10. 'imgsmall',
  11. 'fullpage2imgs',
  12. 'fullpageimage',
  13. 'tripleimgs',
  14. 'tripleimgs_bottom',
  15. 'tripleimgs2',
  16. 'tripleimgs2_bottom',
  17. 'bottomimg',
  18. 'imgfullspreadleft',
  19. 'imgfullspreadright',
  20. 'imgfullspreadright_bleedtop',
  21. 'imgfullspreadright_bleed',
  22. 'breakbefore',
  23. 'breakafter'
  24. ];
  25. var bodyContent = $('#body').html();
  26. bodyContent = bodyContent.replace(/\[([^\/\]]+)\]/g, function(match, word) {
  27. if (baliseWords.includes(word)) {
  28. return '<div class="' + word + '">';
  29. } else {
  30. return match;
  31. }
  32. }).replace(/\[\/([^\]]+)\]/g, function(match, word) {
  33. if (baliseWords.includes(word)) {
  34. return '</div>';
  35. } else {
  36. return match;
  37. }
  38. });
  39. $('#body').empty().append(bodyContent);
  40. // isoler les chiffres des titres
  41. let moments = document.getElementsByClassName("moment");
  42. for(let i = 0; i < moments.length; i++) {
  43. moments[i].innerHTML = "<span class='first-letter'>" + moments[i].innerHTML.substring(0, moments[i].innerHTML.indexOf('—')) + "</span>" + moments[i].innerHTML.slice(moments[i].innerHTML.indexOf(' —'));
  44. }
  45. // cleaner le balisage des éléments contenant plusieurs paragraphes
  46. let contentToParse = [];
  47. let labeurs = document.getElementsByClassName("labeur");
  48. for(let i = 0; i < labeurs.length; i++) {
  49. contentToParse.push(labeurs[i]);
  50. }
  51. // créer header icons pour encarts
  52. let latours = document.getElementsByClassName("latour");
  53. for(let i = 0; i < latours.length; i++) {
  54. contentToParse.push(latours[i]);
  55. let headContent = latours[i].firstChild
  56. let headerEl = document.createElement('div');
  57. headerEl.setAttribute('class', 'latour-header')
  58. let iconImg = document.createElement('img');
  59. iconImg.setAttribute('src', '/user/themes/carnet-atterrissage/assets/map.png');
  60. headerEl.append(iconImg);
  61. headerEl.append(headContent);
  62. latours[i].firstChild?.remove();
  63. latours[i].prepend(headerEl);
  64. }
  65. let lampes = document.getElementsByClassName("lampe");
  66. for(let i = 0; i < lampes.length; i++) {
  67. contentToParse.push(lampes[i]);
  68. let headContent = lampes[i].firstChild
  69. let headerEl = document.createElement('div');
  70. headerEl.setAttribute('class', 'lampe-header')
  71. let iconImg = document.createElement('img');
  72. iconImg.setAttribute('src', '/user/themes/carnet-atterrissage/assets/lampe.png');
  73. headerEl.append(iconImg);
  74. headerEl.append(headContent);
  75. lampes[i].firstChild?.remove();
  76. lampes[i].prepend(headerEl);
  77. }
  78. for(let i = 0; i < contentToParse.length; i++) {
  79. if (contentToParse[i].childNodes.length == 1) {
  80. contentToParse[i].innerHTML = '<p>' + contentToParse[i].innerHTML + '</p>';
  81. } else {
  82. contentToParse[i].innerHTML = "<p>" + contentToParse[i].innerHTML.replace("<p>", "");
  83. }
  84. // micro-typo
  85. for(j = 0; j < contentToParse[i].childNodes.length; j++) {
  86. let contentHTML = contentToParse[i].childNodes[j].innerHTML;
  87. if (contentHTML != undefined) {
  88. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll(' :', '&nbsp;:');
  89. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll(' ?', '&nbsp;?');
  90. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll(' !', '&nbsp;!');
  91. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll('« ', '«&nbsp;');
  92. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll(' »', '&nbsp;»');
  93. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll('“', '«&nbsp;');
  94. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll('”', '&nbsp;»');
  95. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll(' min', '&nbsp;min');
  96. }
  97. }
  98. }
  99. // PAGES TITRES
  100. let h3s = document.querySelectorAll('h3');
  101. for (let h3 of h3s) {
  102. if (h3.nextElementSibling.firstChild.tagName == 'IMG') {
  103. h3.style.width = "50%";
  104. h3.nextElementSibling.firstChild.style.width = "60%";
  105. h3.innerHTML = h3.innerHTML.replace(/[^\s]*/, `<div class="gros-chiffre">${1}</div>`);
  106. }
  107. }