parsing.js 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // transformer les balises [...] en <div class="...">
  2. let bodyContent = $('#body').html()
  3. .replace(/\[([^\/\]]+)\]/g, '<div class="$1">')
  4. .replace(/\[\/([^\]]+)\]/g, '</div>');
  5. $('#body').empty().append(bodyContent);
  6. // isoler les chiffres des titres
  7. let moments = document.getElementsByClassName("moment");
  8. for(let i = 0; i < moments.length; i++) {
  9. 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(' —'));
  10. }
  11. // cleaner le balisage des éléments contenant plusieurs paragraphes
  12. let contentToParse = [];
  13. let labeurs = document.getElementsByClassName("labeur");
  14. for(let i = 0; i < labeurs.length; i++) {
  15. contentToParse.push(labeurs[i]);
  16. }
  17. // créer header icons pour encarts
  18. let latours = document.getElementsByClassName("latour");
  19. for(let i = 0; i < latours.length; i++) {
  20. contentToParse.push(latours[i]);
  21. let headContent = latours[i].firstChild
  22. let headerEl = document.createElement('div');
  23. headerEl.setAttribute('class', 'latour-header')
  24. let iconImg = document.createElement('img');
  25. iconImg.setAttribute('src', '/user/themes/carnet-atterrissage/assets/map.png');
  26. headerEl.append(iconImg);
  27. headerEl.append(headContent);
  28. latours[i].firstChild.remove();
  29. latours[i].prepend(headerEl);
  30. }
  31. let lampes = document.getElementsByClassName("lampe");
  32. for(let i = 0; i < lampes.length; i++) {
  33. contentToParse.push(lampes[i]);
  34. let headContent = lampes[i].firstChild
  35. let headerEl = document.createElement('div');
  36. headerEl.setAttribute('class', 'lampe-header')
  37. let iconImg = document.createElement('img');
  38. iconImg.setAttribute('src', '/user/themes/carnet-atterrissage/assets/lampe.png');
  39. headerEl.append(iconImg);
  40. headerEl.append(headContent);
  41. lampes[i].firstChild.remove();
  42. lampes[i].prepend(headerEl);
  43. }
  44. for(let i = 0; i < contentToParse.length; i++) {
  45. if (contentToParse[i].childNodes.length == 1) {
  46. contentToParse[i].innerHTML = '<p>' + contentToParse[i].innerHTML + '</p>';
  47. } else {
  48. contentToParse[i].innerHTML = "<p>" + contentToParse[i].innerHTML.replace("<p>", "");
  49. }
  50. // micro-typo
  51. for(j = 0; j < contentToParse[i].childNodes.length; j++) {
  52. let contentHTML = contentToParse[i].childNodes[j].innerHTML;
  53. if (contentHTML != undefined) {
  54. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll(' :', '&nbsp;:');
  55. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll(' ?', '&nbsp;?');
  56. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll(' !', '&nbsp;!');
  57. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll('« ', '«&nbsp;');
  58. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll(' »', '&nbsp;»');
  59. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll('“', '«&nbsp;');
  60. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll('”', '&nbsp;»');
  61. contentToParse[i].childNodes[j].innerHTML = contentToParse[i].childNodes[j].innerHTML.replaceAll(' min', '&nbsp;min');
  62. }
  63. }
  64. }
  65. // PAGES TITRES
  66. let h3s = document.querySelectorAll('h3');
  67. for (let h3 of h3s) {
  68. if (h3.nextElementSibling.firstChild.tagName == 'IMG') {
  69. h3.style.width = "50%";
  70. h3.nextElementSibling.firstChild.style.width = "60%";
  71. h3.innerHTML = h3.innerHTML.replace(/[^\s]*/, `<div class="gros-chiffre">${1}</div>`);
  72. }
  73. }